简单化把权重w去了,要的话结构体里加一下就好了
结构体边的定义:
typedef struct Edge{
int to;//边指向的节点
int next;//下一条边的编号
};
加一条边的函数为:
void add_edge(int from,int to){
edge[idx].to=to;
edge[idx].next=head[from];
head[from]=idx++;
}
dfs算法:
void dfs(int u){
visited[u]=true;
for(int i=head[u];i!=-1;i=edge[i].next){
int son=edge[i].to;
if(!visited[son]) dfs(son);
}
}
我自己的感悟是这是以边在进行遍历,遍历到的边判断终点是否已经访问。在学数据结构的书上是以顶点来遍历的。(倘若不对大佬轻喷)