手动邻接表,据说比vector快了超多,在这里存一份模板= =。
代码:
1 struct node{ 2 int to,next,w; 3 }edge[N]; 4 5 int n,m;//n为结点数 6 int idx,head[N]; 7 //初始化 8 void init(){ 9 idx=1; 10 memset(head,-1,sizeof(head)); 11 } 12 //添加边 13 void addEdge(int u,int v,int w){ 14 edge[idx].to=v; 15 edge[idx].w=w; 16 edge[idx].next=head[u]; 17 head[u]=idx; 18 idx++; 19 } 20 //链式前向星的遍历 21 for(int i=1;i<=n;i++){ 22 for(int j=head[i];j!=-1;j=edge[j].next){ 23 cout<<i<<" "<<edge[j].to<<endl; 24 } 25 }