/*计算无向图中连通块的数目*/
#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;
}
计算无向图中连通块的数目
最新推荐文章于 2020-11-30 21:42:48 发布