程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> 編程綜合問答 >> 無向圖 鄰接表-無向圖的存儲結構,求大神求大神

無向圖 鄰接表-無向圖的存儲結構,求大神求大神

編輯:編程綜合問答
無向圖的存儲結構,求大神求大神

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
}

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved