两行代码,理解了一个小时! 两个数组记录邻接表! ( 刘汝佳白书)

来源:互联网 发布:js confirm的返回值 编辑:程序博客网 时间:2024/05/16 15:44
#include<iostream>#include<algorithm>#include<stdio.h>#include<stdlib.h>#include<string.h>#include<queue>#include<math.h>#include<set>#include<vector>#define MAXN 15#define INF 1000int main(){int i,j,n,m,t,c;int first[MAXN];int u[MAXN],v[MAXN],w[MAXN],next[MAXN];scanf("%d%d",&n,&m);for(i=0;i<=n;i++) first[i]=-1;for(i=0;i<m;i++){scanf("%d%d",&u[i],&v[i]);//u是弧尾,v弧头 next[i]=first[u[i]];//就这万恶的两行 first[u[i]]=i;//短小精悍! }//后面为自己理解后添加的。 for(i=1;i<=n;i++){if(first[i]==-1){printf("没有以点<%d>为起点的邻接表。\n",i);continue;}printf("以点<%d>为起点的邻接表:\n",i);for(j=first[i];j!=-1;j=next[j]){printf("<%d  %d>    ",i,v[j]);}printf("\n\n");}return 0;}

原创粉丝点击