解释都在代码里了,虽然我也不会解释(不要打我~~)
1 #include<bits/stdc++.h> 2 #define maxn 20000 3 using namespace std; 4 int cnt=0; 5 int head[maxn]; 6 7 struct Edge{ 8 int next;//同起点的上一条边的编号 9 int to;//到达的终点 10 int w;//权值 11 }; 12 struct Edge edge[maxn]; 13 14 void add(int u,int v,int w)//加边的函数 15 { 16 edge[cnt].w=w;//初始化cnt=0 17 edge[cnt].to=v; 18 edge[cnt].next=head[u];//初始化head数组为-1 19 head[u]=cnt++; 20 } 21 22 23 int main() 24 { memset(head,-1,sizeof(head)); 25 for(int i=head[u];~i;i=edge[i].next)//循环的方式 (~i表示当i等于-1是退出循环) 26 { 27 28 } 29 return 0; 30 }
先做一个最基础的,以后补上进阶的~