西南科技大學OJ題 有向圖的鄰接矩陣存儲根計算1072

有向圖的鄰接矩陣存儲根計算

 5000(ms)

 10000(kb)

 2246 / 3742

Tags: 有向圖

若有向圖中存在一個頂點v,從v可以通過路徑到達圖中其他所有頂點,那麼稱v爲該有向圖的根。假設圖G採用鄰接矩陣存儲,求有向圖的所有根。

輸入

第一行爲一個整數n,表示頂點的個數(頂點編號爲0到n-1),接下來是爲一個n*n大小的整數矩陣,表示圖的鄰接關係。

輸出

有向圖的所有根。

樣例輸入

5
0 1 0 0 0
0 0 1 1 0
0 0 0 1 0
1 0 0 0 1
1 0 0 0 0

樣例輸出

01234

 

 

#include<stdio.h>
int map[100][100],n;
void CreateMap()//創建鄰接矩陣 
{
    for(int i=0;i<n;i++)
    for(int j=0;j<n;j++)
    scanf("%d",&map[i][j]);
}
void FindAll(int i,int flag[])//標記從i開始能夠到達的所有點 
{
    if(flag[i]==0)
    {
        flag[i]=1;
        for(int j=0;j<n;j++)
        {
            if(map[i][j]!=0)
            FindAll(j,flag);
        }
    }
}
int main()
{
    scanf("%d",&n);
    CreateMap();
    for(int i=0;i<n;i++)//從0到n-1開始依次判斷是否爲根 
    {
        int flag[100]={0};//c初始化標記 
        FindAll(i,flag);
        int t=0;
        for(int j=0;j<n;j++)//判斷從i開始是否能夠到達所有點 
        {
            if(flag[j]==0) t=1;
        }
        if(t==0) printf("%d",i);
    }
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章