思路
注意
代码
#include<vector>
using namespace std;
const int maxn=1000010;
vector<int> adj[maxn];
bool vis[maxn]={false};
vector<int> v;
void DFS(int u){
vis[u]=true;
for(int i=0;i<adj[u].size();i++){
int temp=adj[u][i];
if(vis[temp]==false) DFS(temp);
}
}
int main(){
int a,b;
while(scanf("%d%d",&a,&b)!=EOF){
adj[a].push_back(b);
adj[b].push_back(a);
v.push_back(a);
v.push_back(b);
}
int ans=0;
for(int i=0;i<v.size();i++){
int temp=v[i];
if(vis[temp]==false){
DFS(temp);
ans++;
}
}
printf("%d",ans);
return 0;
}