#include <iostream> #include <cstring> #include <vector> #include <unordered_set> #include<map> using namespace std; map<int,int> s; int find(int x){ while(s[x]>0){ x=s[x]; } return x; } void union1(int r1,int r2){ s[r1]=r2; } int main() { int a, b; while (cin >> a >> b) { // 注意 while 处理多个 case int r1=find(a),r2=find(b); if(r1!=r2) union1(r1,r2); } int res=0;unordered_set<int> ans; for(auto it:s){ ans.insert(find(it.first)); } cout<<ans.size(); } // 64 位输出请用 printf("%lld")