标签:
基本的并查集。 可是 题目里说的There will be a blank line between two cases. 这句话在扯淡吗- - 我还加了换行 PE了两次 后来看网上AC的代码根本不需要啊- -
#include <iostream> using namespace std; int p[1005]; void init(int n) { for(int i=1;i<=n;i++) p[i]=i; } int find(int x) { while(x!=p[x]) x=p[x]; return x; } void join(int x,int y) { int fx=find(x); int fy=find(y); if(fx!=fy) p[fy]=fx; } int main() { int t; cin>>t; while(t--) { int n,m; cin>>n>>m; init(n); for(int i=1;i<=m;i++) { int a,b; cin>>a>>b; join(a,b); } int sum=0; for(int i=1;i<=n;i++) { if(i==p[i]) sum++; } cout<<sum<<endl; cout<<endl; } return 0; }
标签:
原文地址:http://www.cnblogs.com/luosuo10/p/5314826.html