边结点结构体的定义及使用
#include<cstdio> int cnt; struct Edge{ int to; //边的终点 int next; int w; //边的权值 }; void addEdge(int start,int to,int w){ edge[cnt].w = w; edge[cnt].to = to; //终点 edge[cnt].next = head[start]; head[start] = cnt++; } int dfs(int u) { for(int i=head[u]; i!=-1; i=edge[i].next){ v = edge[i].next; if(!vis[v]) //内容省略 } } int main() { cnt = 0; int arc_num; int u,v,w; for(int i=1;i<=arc_num;i++){ cin>>u>>v>>w; addEdge(u,v,w) } }
问题一:结构体内的next是什么意思?
问题二:edge[cnt].next = head[start]; head[start] = cnt++; 这两个语句什么意思?
问题三:for(int i=head[u]; i!=-1; i=edge[i].next) 这又是什么意思?
参考:点击