题目描述
假设无向图G采用邻接表存储,编写一个算法输出邻接矩阵。
输入
第一行为一个整数n,表示顶点的个数(顶点编号为0到n-1)。第二行表示顶点0可直接到达的顶点编号,其他行定义相同。
输出
输出图G的邻接矩阵。整数矩阵大小为n*n,表示图的邻接关系。数字为0表示不邻接,1表示邻接。
样例输入
5
1 3 4
0 2 3
1 3 4
0 1 2 4
0 2 3
样例输出
01011
10110
01011
11101
10110
#include<stdio.h>
#include<malloc.h>
#include<string.h>
#define MaxSize 1000
int a[MaxSize][MaxSize];
int main()
{
int n;
scanf("%d",&n);
char ch;
getchar();//接收换行符
for(int i=0;i<n;i++)
{
for(int j=0;j<MaxSize;j++)//最多能输入MaxSize个数,输入换行符结束输入
{
scanf("%c",&ch);
if(ch=='\n') break;
else
if(ch==' ') continue;
else
{
int num=ch-'0';
a[i][num]=1;
}
}
}
for(int i=0;i<n;i++)//从0号顶点开始遍历
{
for(int j=0;j<n;j++)
{
if(a[i][j]==1)//如果i->j可到达,则输出1,否则为0
{
printf("1");
}else printf("0");
}
printf("\n");
}
}