#include <iostream>
#include <cstdio>
#include <cstring>
#include <string>
#include <algorithm>
#include <vector>
using namespace std;
#define maxn 1000 + 10
int n, m;
vector<int>G[maxn];
int cnt ;
bool vis[maxn];
void DFS(int u)
{
vis[u] = true;
//cout<<1<<endl;
for(int i=0; i<G[u].size(); i++)
if(!vis[G[u][i]])//这个条件很重要 忘记写的话会死循环
DFS(G[u][i]);
return ;//这个也要写
}
int main()
{
while(~scanf("%d", &n) && n)
{
memset(vis, false, sizeof(vis));
cnt = 0;
for(int i=1; i<=n; i++)
G[i].clear();
cin>>m;
while(m--)
{
int u, v;
scanf("%d%d", &u, &v);
G[u].push_back(v);
G[v].push_back(u);
}
for(int i=1; i<=n; i++)
if(!vis[i])
{
DFS(i);
cnt++;
}
cout<<--cnt<<endl;
//system("pause");
}
return 0;
}
HDU 1232 另外一种写法
最新推荐文章于 2021-08-15 01:29:03 发布