数组模拟邻接表
方法一,结构体+数组模拟
1 void add(int form,int to,int w); 2 int num=0; 3 struct node 4 { 5 int to,dis,next; 6 }; 7 node edge[maxn];//模拟链表结构 8 int head[maxn];//存储头 9 int main() 10 { 11 for(int i=1;i<=m;i++) 12 { 13 cin>>u>>v>>w; 14 add(u,v,w); 15 } 16 } 17 void add(int form,int to,int w) 18 { 19 //模拟头插法 20 num++; 21 edge[num].next=head[form]; 22 edge[num].to=to; 23 edge[num].dis=w; 24 head[form]=num; 25 }
方法二,数组模拟
1 int u[maxn],v[maxn],w[maxn]; 2 int next[maxn],first[maxn]; 3 int main() 4 { 5 for(int i=1;i<=m;i++) 6 { 7 cin>>u[i]>>v[i]>>w[i]; 8 //终点:v[],权值:w[] 9 //next,first仅充当链表索引,i为链接依据 10 next[i]=first[u[i]]; 11 first[u[i]]=i; 12 } 13 }
参考:

浙公网安备 33010602011771号