1 solutions
-
0
C++ :
#include <bits/stdc++.h> using namespace std; int f[20010];//描述集合关系 //查:查询元素的根 int find(int x){ return f[x]==x?x:f[x]=find(f[x]); } //并:合并元素xy void merge(int x,int y){ int fx = find(x); int fy = find(y); if(fx != fy){ f[fx] = fy; } } int main(){ int n,m,p,q; cin>>n>>m>>p>>q; int ra = 0,rb = 0;//ab公司每个集合中和小明、小明认识的人的数量 //初始化 for(int i = 1;i <= n + m;i++) f[i] = i; //读入p个关系 int x,y; for(int i = 1;i <= p;i++){ cin>>x>>y; merge(x,y); } //读入q个关系 for(int i = 1;i <= q;i++){ cin>>x>>y; x = x * -1; y = y * -1; merge(x+n,y+n); } //求和1号以及n+1号是朋友的人的数量 for(int i = 1;i <= n;i++){ if(find(i) == find(1)) ra++; } for(int i = n+1;i <= n + m;i++){ if(find(i) == find(n+1)) rb++; } cout<<min(ra,rb); }
- 1
Information
- ID
- 9974
- Time
- 1000ms
- Memory
- 128MiB
- Difficulty
- (None)
- Tags
- # Submissions
- 0
- Accepted
- 0
- Uploaded By