Description
给出一个有n个顶点的无向图,顶点编号从0到n-1。给出每一条边,输出该图的邻接矩阵和邻接表。
Input
输入的第一行是顶点数n和边数 e 。 1 ≤ n ≤ 300 ,1 ≤ e ≤ 1000
接下来是 e 行,每行2个整数 i , j ( 0 ≤ i, j < n ) ,表示顶点 i 和 j 之间有一条边。
Output
输出该图的邻接矩阵。邻接表按顶点编号每行从小到大,每列也是从小到大。
然后输出一个空行。
接着输出该图的邻接表。
为了使得答案唯一,邻接表每行的第一个数字是顶点编号,然后按照顶点的下标编号从小到大输出各邻接顶点。
Sample Input
6 7
0 1
1 5
0 4
2 5
1 4
2 3
3 5
Sample Output
0 1 0 0 1 0
1 0 0 0 1 1
0 0 0 1 0 1
0 0 1 0 0 1
1 1 0 0 0 0
0 1 1 1 0 0
0 1 4
1 0 4 5
2 3 5
3 2 5
4 0 1
5 1 2 3
01
#include
02
int main(void)
03
{ int a[300][300]={0}; //初始化
04
int i,j,n,e,b;
05
scanf("%d %d",&n,&e);
06
for(b=0;b<e;b++)
07
{scanf("%d %d",&i,&j);
08
a[i][j]=a[j][i]=1;}
09
for(i=0;i<n;i++)
10
{ for(j=0;j<n;j++)
11
{
12
printf("%d ",a[i][j]);}
13
14
printf("\n");}
15
printf("\n");
16
for(i=0;i<n;i++)
17
{printf("%d ",i);
18
for(j=0;j<n;j++)
19
{if(a[i][j]==1)
20
printf("%d ",j);
21
}printf("\n");
22
}
23
24
return 0;
25
}