HDOJ 2120 Ice_cream's world I(并查集)
2015-07-29 17:03
501 查看
Ice_cream's world I
Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 793 Accepted Submission(s): 464
[align=left]Problem Description[/align]
ice_cream's world is a rich country, it has many fertile lands. Today, the queen of ice_cream wants award land to diligent ACMers. So there are some watchtowers are set up, and wall between watchtowers be build, in order to partition
the ice_cream’s world. But how many ACMers at most can be awarded by the queen is a big problem. One wall-surrounded land must be given to only one ACMer and no walls are crossed, if you can help the queen solve this problem, you will be get a land.
[align=left]Input[/align]
In the case, first two integers N, M (N<=1000, M<=10000) is represent the number of watchtower and the number of wall. The watchtower numbered from 0 to N-1. Next following M lines, every line contain two integers A, B mean between
A and B has a wall(A and B are distinct). Terminate by end of file.
[align=left]Output[/align]
Output the maximum number of ACMers who will be awarded.
One answer one line.
[align=left]Sample Input[/align]
8 10
0 1
1 2
1 3
2 4
3 4
0 5
5 6
6 7
3 6
4 7
[align=left]Sample Output[/align]
3
大意:
两个塔之间有一个墙,就是求得把地图分成了几个区域,所以查看是否成环,如果成环,数量+1
ac代码:
#include<stdio.h> #include<string.h> #include<iostream> #include<algorithm> using namespace std; #define MAXN 100100 int pri[MAXN]; int v[MAXN]; int num; int find(int x) { int r=x; while(r!=pri[r]) r=pri[r]; int i=x,j; while(i!=r) { j=pri[i]; pri[i]=r; i=j; } return r; } void connect(int xx,int yy) { int a=find(xx); int b=find(yy); if(a!=b) pri[a]=b; else//如果成环,数量+1 num++; } int main() { int n,m; int i,a,b; while(scanf("%d%d",&n,&m)!=EOF) { for(i=0;i<n;i++)//因为有0号塔的存在,所以从0开始,不要习惯性从1开始 pri[i]=i; num=0; for(i=0;i<m;i++) { scanf("%d%d",&a,&b); connect(a,b); } printf("%d\n",num); } return 0; }
相关文章推荐
- 小希的迷宫
- 40 - 找出数组中只出现一次的数字
- [Leetcode]Number of 1 Bits
- poj 1127 线段相交的判定
- HDU 5321 Beautiful Set 美丽集合
- 【POJ2923】【Relocation】
- 根据文字算出文字所占区域大小
- 【IDE-Visual Studio】引用ms32.lib 编译时发现链接错误
- 【SQL语句】 - Ctrl+3 查询表属性的存储过程 [sp_select_talberowName]
- Rails 应用使用 Capistrano2 部署流程
- continue和break的使用注意
- php实现在多维数组中查找特定value的方法
- js数组元素删除操作
- Netty中对象序列化传输机制研究分析
- hdu 5325 Crazy Bobo
- [leetcode-34]Search for a Range(C)
- Activity与Fragment状态保存问题
- 【状压dp】【bzoj 1087】【SCOI 2005】互不侵犯King
- 对于ODBC,OLEDB和ADO目前理解
- ARM指令集详解(超详细!带实例!)