CodeForces 217 A.Ice Skating(并查集)
2017-07-18 00:00
495 查看
Description
给出n个点的横纵坐标,两个点互通当且仅当两个点有相同的横坐标或纵坐标,问最少需要加几个点才能使得所有点都两两互通
Input
第一行一个整数n表示点数,之后n行每行两个整数x[i]和y[i]表示第i个点的横纵坐标(1<=n<=100,1<=x[i],y[i]<=1000)
Output
输出需要加的最少点数
Sample Input
2
2 1
1 2
Sample Output
1
Solution
并查集,先把横坐标或纵坐标相同的点合并,最后得到num个集合,两个集合之间只需要一个点就可以联系起来,所以要加的点数就是num-1个
Code
给出n个点的横纵坐标,两个点互通当且仅当两个点有相同的横坐标或纵坐标,问最少需要加几个点才能使得所有点都两两互通
Input
第一行一个整数n表示点数,之后n行每行两个整数x[i]和y[i]表示第i个点的横纵坐标(1<=n<=100,1<=x[i],y[i]<=1000)
Output
输出需要加的最少点数
Sample Input
2
2 1
1 2
Sample Output
1
Solution
并查集,先把横坐标或纵坐标相同的点合并,最后得到num个集合,两个集合之间只需要一个点就可以联系起来,所以要加的点数就是num-1个
Code
#include<cstdio> #include<iostream> #include<cstring> #include<algorithm> #include<cmath> #include<vector> #include<queue> #include<map> #include<set> #include<ctime> using namespace std; typedef long long ll; #define INF 0x3f3f3f3f #define maxn 111 int n,x[maxn],y[maxn],fa[maxn]; void init() { for(int i=1;i<=n;i++)fa[i]=i; } int find(int x) { if(fa[x]==x)return x; return fa[x]=find(fa[x]); } void unite(int x,int y) { x=find(x),y=find(y); if(x==y)return ; fa[x]=y; } int main() { while(~scanf("%d",&n)) { init(); for(int i=1;i<=n;i++)scanf("%d%d",&x[i],&y[i]); for(int i=1;i<=n;i++) for(int j=i+1;j<=n;j++) if(x[i]==x[j]||y[i]==y[j])unite(i,j); int ans=0; for(int i=1;i<=n;i++) if(fa[i]==i)ans++; printf("%d\n",ans-1); } return 0; }
相关文章推荐
- CodeForces 217A Ice Skating(并查集思路)
- CF 并查集(或者图) Ice Skating
- CodeForces 217A Ice Skating(DFS)
- Codeforces---Ice Skating
- CF218C:Ice Skating(并查集)
- 并查集Codeforces Round #134 (Div. 1), problem: (A) Ice Skating
- codeforces 217A-- Ice Skating
- C - Ice Skating CodeForces - 217A
- 【Codeforces】-DZY Loves Chemistry(并查集变形)
- Codeforces 691D. Swaps in Permutation (并查集 + 优先队列)
- CodeForces 699D—— Fix a Tree(并查集判断环)
- (one day one problem) codeforces 468/problem/B Two Sets (并查集)
- CodeForces 300B Coach (并查集)
- HDU-2120-Ice_cream's world I【并查集】
- codeforces 181.div2 300B - Coach 并查集
- [LCT维护最小生成树 || CDQ分治 || 线段树 并查集 dfs树] Codeforces 603E #334 (Div. 1) E. Pastoral Oddities
- Hdu oj 2120 Ice_cream's world I(并查集判环)
- Codeforces 622C Not Equal on a Segment (并查集思想)
- Codeforces 870E Points, Lines and Ready-made Titles 并查集
- Codeforces 396 div.2 带权并查集