计算无向图中连通块的数目
来源:互联网 发布:淘宝属于腾讯软件吗 编辑:程序博客网 时间:2024/06/11 20:08
/*计算无向图中连通块的数目*/#include <iostream>#include <stdlib.h>#include <vector>#include <memory.h>using namespace std;struct Node{ int destNum; int dest[100]; }node[1000];int visit[1000];int n,m;bool ok;void DFS(int v){ if(visit[v] == 0) { visit[v] = 1; ok = true; for(int i = 0; i<node[v].destNum; i++) { DFS(node[v].dest[i]); } } }int main(){ while(cin >> n >> m) { ok = false; memset(visit, 0, sizeof(visit)); memset(node, 0, sizeof(node)); for(int i=1; i<= m; i++) { int start, end; cin >> start >> end; node[start].dest[node[start].destNum++]= end; node[end].dest[node[end].destNum++]= start; } int connectNum = 0; for(int i=1; i<=n; i++) { ok = false; DFS(i); if(ok) { connectNum++; } } cout << connectNum << endl; } system("pause"); return 0;}