西南科技大學OJ題 無向圖的連通分量計算1065

無向圖的連通分量計算

 5000(ms)

 10000(kb)

 2380 / 5224

Tags: 圖

假設無向圖G採用鄰接矩陣存儲,編寫一個算法求連通分量的個數。

輸入

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

輸出

連通分量的個數。

樣例輸入

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

樣例輸出

1

 

#include<stdio.h>
int a[100]={0};//s初始化標記 
void CreateMap(int n,int edges[100][100])//創建鄰接矩陣 
{
    for(int i=0;i<n;i++)
    {
        for(int j=0;j<n;j++)
        {
            scanf("%d",&edges[i][j]);
        }
    }
}
void SearchMap(int k,int edges[100][100],int n)//查找所有連通的結點,並且標記 
{
    a[k]=1;
    for(int i=0;i<n;i++)
    {
        if(edges[k][i]==1&&a[i]==0)
        SearchMap(i,edges,n);
    }
}
int main()
{
    int edges[100][100];
    int n;
    scanf("%d",&n);
    CreateMap(n,edges);
    int sum=0;//初始化統計值 
    for(int i=0;i<n;i++)//從第一個結點開始到n-1查找連通分量 
    {
        if(a[i]==0)//如果該結點未標記則sum+1,並且查找於該結點連接的所有結點 
        {
            sum++;
            SearchMap(i,edges,n);
        }
    }
    printf("%d",sum);
}

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