标签:
1 #include<stdio.h> 2 #include<string.h> 3 #include<iostream> 4 using namespace std; 5 const int maxn=1100; 6 const int maxm=maxn*maxn/2; 7 int n,m; 8 int head[maxn],nxt[maxn],pnt[maxn],cost[maxn]; 9 int e;//e代表这些数组中的下标,便于录入和寻找某值 10 void AddEdge(int u,int v,int c) 11 { 12 pnt[e]=v;//表示连接的点 13 cost[e]=c;//该边的权值 14 nxt[e]=head[u];//nxt的下标与pnt的下标相同,所以nxt存储着上一个被找出的与u连接的点的pnt下标,和上一个nxt的下标,当值为-1时,则没有了; 15 head[u]=e++;//head存储着当前刚刚录入的pnt和nxt的下标,即存储着与u连接的目前最后出现的点的下标 16 } 17 int main() 18 { 19 while(~scanf("%d%d",&n,&m)) 20 { 21 e=0; 22 memset(head,-1,sizeof(head)); 23 for(int i=0; i<m; i++) 24 { 25 int u,v,c; 26 scanf("%d%d%d",&u,&v,&c); 27 AddEdge(u,v,c); 28 } 29 for(int u=1; u<=n; u++)//从前往后输出 30 { 31 printf("%d:",u); 32 for(int i=head[u]; i!=-1; i=nxt[i]) 33 printf("%d cost=%d",pnt[i],cost[i]); 34 puts(""); 35 } 36 } 37 return 0; 38 } 39 /* 40 模拟数据 41 7 12 42 1 2 24 43 1 3 8 44 1 4 15 45 2 5 6 46 3 5 7 47 3 6 3 48 4 7 4 49 5 7 9 50 6 5 2 51 6 7 3 52 6 4 5 53 7 2 3 54 */
标签:
原文地址:http://www.cnblogs.com/tianmin123/p/4788146.html