fanky1 2014-11-13 07:33 采纳率: 100%
浏览 2253
已采纳

无向图的存储结构,求大神求大神

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

  • 写回答

1条回答 默认 最新

  • fanky1 2014-11-19 09:29
    关注

    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
    }

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥60 版本过低apk如何修改可以兼容新的安卓系统
  • ¥25 由IPR导致的DRIVER_POWER_STATE_FAILURE蓝屏
  • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
  • ¥50 有数据,怎么用matlab求全要素生产率
  • ¥15 TI的insta-spin例程
  • ¥15 完成下列问题完成下列问题
  • ¥15 C#算法问题, 不知道怎么处理这个数据的转换
  • ¥15 YoloV5 第三方库的版本对照问题
  • ¥15 请完成下列相关问题!
  • ¥15 drone 推送镜像时候 purge: true 推送完毕后没有删除对应的镜像,手动拷贝到服务器执行结果正确在样才能让指令自动执行成功删除对应镜像,如何解决?