CodeForces 217A Ice Skating(并查集思路)
2015-04-10 23:54
337 查看
题目链接
题目大概意思就是 在坐标系上 给你 几个点坐标 看他们需要几个中间点能让他们每两个都能连成一条线!这每个点就和 并查集的里每个点很像 看有几个祖先 祖先减一就是 这题答案!
所以 这题完全不用用到神马 图的连通集来做(其实是我还没学,不会)
这个思路 也是 tyh学长 讲解的 很有道理 啊!然而 当我真正开始写的时候 还是遇到不少问题 请教了学长 毕竟不是纯并查集 第一次写这个 ,最后在我的思考与请教下AC了,虽然效率很低,不过还是很爽的。
1.首先,并查集都是单个点(数据)对应单个点(数据),而这个每个坐标有两个数据,所以就把每个坐标当做一个编号,从1到100(题目说坐标个数不超过100) 。
2.根据题意判断能不能连就看这个坐标,x,y是否和另一个有一个相同(这个好像没考虑x,y都相同的情况),有就用并查集的知识连接起来!成一条线!,用两个for就可以将每个点与其他点判断一次!
后天就是校赛。。。真的很虚。。。最近效率还是很低。。。学业也忙起来了。。。心中还有别的事情牵绊。。。不多说 加油吧!~
题目大概意思就是 在坐标系上 给你 几个点坐标 看他们需要几个中间点能让他们每两个都能连成一条线!这每个点就和 并查集的里每个点很像 看有几个祖先 祖先减一就是 这题答案!
所以 这题完全不用用到神马 图的连通集来做(其实是我还没学,不会)
这个思路 也是 tyh学长 讲解的 很有道理 啊!然而 当我真正开始写的时候 还是遇到不少问题 请教了学长 毕竟不是纯并查集 第一次写这个 ,最后在我的思考与请教下AC了,虽然效率很低,不过还是很爽的。
1.首先,并查集都是单个点(数据)对应单个点(数据),而这个每个坐标有两个数据,所以就把每个坐标当做一个编号,从1到100(题目说坐标个数不超过100) 。
2.根据题意判断能不能连就看这个坐标,x,y是否和另一个有一个相同(这个好像没考虑x,y都相同的情况),有就用并查集的知识连接起来!成一条线!,用两个for就可以将每个点与其他点判断一次!
[code]#include<iostream> #include<cstdio> #include<algorithm> using namespace std; int father[1001]; int findfather(int x) { if(father[x]==x) return x; else { father[x]=findfather(father[x]); return father[x]; } } void merge(int a,int b) { int fa=findfather(a); int fb=findfather(b); if(fa!=fb) { father[fb]=fa; } } int main() { int n; while(cin>>n&&n) { int x[n+1],y[n+1],t=0; for(int i=1;i<=n;i++) father[i]=i; for(int i=1;i<=n;i++) { cin>>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]) { merge(i,j); } } } for(int i=1;i<=n;i++) { if(father[i]==i) t++; } cout<<t-1<<endl; } return 0; }
后天就是校赛。。。真的很虚。。。最近效率还是很低。。。学业也忙起来了。。。心中还有别的事情牵绊。。。不多说 加油吧!~
相关文章推荐
- C - Ice Skating CodeForces - 217A
- codeforces 217A-- Ice Skating
- CodeForces 217 A.Ice Skating(并查集)
- CodeForces 217A Ice Skating(DFS)
- 并查集Codeforces Round #134 (Div. 1), problem: (A) Ice Skating
- Codeforces---Ice Skating
- CF 并查集(或者图) Ice Skating
- CF218C:Ice Skating(并查集)
- CodeForces 722C. Destroying Array(并查集 好题)
- 【CodeForces】915 F. Imbalance Value of a Tree 并查集
- Codeforces 278C Learning Languages(并查集)
- CodeForces - 731C Socks(并查集,贪心)
- Codeforces 734E Anton and Tree【并查集缩点||DFS缩点+树的直径】
- POJ 1456 Supermarket 并查集(想不到的思路)
- CodeForces - 792C Divide by Three(思路)(分类讨论)
- CodeForces - 868BC Qualification Rounds(思路)
- Codeforces 859 E Desk Disorder(并查集判环)
- codeforces 278C. Learning Languages(并查集)
- Ice Cave--Codeforces(广度优先搜索)
- codeforces 366D 并查集