2017年11月25日土曜日

非連結グラフのプログラムで表現する

非連結グラフをプログラムで表現します。

基本は、連結グラフの時と変わりませんが、 グラフが分かれていることを
示すために変数を持っています。

図は以下の非連結グラフを使っています。
1から4が一つのグラフとなっており
5から8が一つのグラフとなっています。



cでのプログラムになります。

#include 
using namespace std;

#define MAX 8
bool visited[MAX];

void visit(int i);

int GRAPH[MAX][MAX] = {
    {0,1,0,0,0,0,0,0},
    {1,0,1,1,0,0,0,0},
    {0,1,0,0,0,0,0,0},
    {0,1,0,0,0,0,0,0},
    {0,0,0,0,0,1,0,0},
    {0,0,0,0,1,0,1,1},
    {0,0,0,0,0,1,0,1},
    {0,0,0,0,0,1,1,0}
};

int main() {
    // 非連結用
    int count = 1;  
    
    for(int i = 0;i < MAX;++i){
        if(!visited[i]){
            printf("graph%d:",count++);
            visit(i);
        }
    }
    return 0;
}

void visit(int i){
    visited[i] = true;
    for(int j = 0;j < MAX;++j){
        if(GRAPH[i][j] == 1 && !visited[j]){
            printf("%d->%d ",i + 1,j + 1);
            visit(j);
        }
    }
}
実行結果

graph1:1->2 2->3 2->4 graph2:5->6 6->7 7->8

0 件のコメント:

コメントを投稿