博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
poj 2524
阅读量:5076 次
发布时间:2019-06-12

本文共 1056 字,大约阅读时间需要 3 分钟。

 

 

 

 

 

 

 

 

 

 

 

 

 

#include <iostream>

#include<cstdio>
using namespace std;
#define N 50010
int p[N];
void init(int n)
{ for(int i=1 ;i<=n;i++) p[i]=i ; }
int find(int x)
{ if (x==p[x]) return x;
else return p[x]=find(p[x]);
}

int main( )

{ int n,m,i,x,y,px,py,c=1;

while(scanf("%d%d",&m,&n),m||n)
{ init(m);
for(i=1;i<=n;i++)
{ scanf("%d%d",&x,&y);
px=find(x); py=find(y);
if(px!=py) { p[px]=py; m--;}
}
printf("Case %d: %d\n",c++,m);
}
}

 

 

 

 

 

 

 

 

 

//poj 2524

#include <cstdio>
#include <string>
#include <cstring>
#include <cmath>
#include <algorithm>
#include <iostream>
using namespace std;
#define MAX 50008
int pa[MAX];
int findset(int x){
return x==pa[x]? x : pa[x]=findset(pa[x]);
}
int main(){
int n,m,T=1;
while(scanf("%d%d",&n,&m)==2 &&n){
if(m==0){
printf("Case %d: %d\n",T++,n);continue;
}
for(int i=1;i<=n;i++)pa[i]=i;
int u,v;
for(int i=0;i<m;i++){
scanf("%d%d",&u,&v);
u=findset(u);
v=findset(v);
if(u!=v)pa[v]=u;
}
int ans=0;
for(int i=1;i<=n;i++){
if(pa[i]==i)ans++;
}
printf("Case %d: %d\n",T++,ans);
}
return 0;
}

 

转载于:https://www.cnblogs.com/2014acm/p/3903295.html

你可能感兴趣的文章
KindEdit 的编辑插件的提问家
查看>>
Springboot项目统一异常处理
查看>>
PAT1025. PAT Ranking
查看>>
The difference between macro and function I/Ofunction comparision(from c and pointer )
查看>>
jekins自动部署tomcat注意事项、连接tomcat报错
查看>>
Android--ViewPager的无限轮播
查看>>
使用jdbc给一张表增加多行字段
查看>>
My97DatePicker时间控件使用
查看>>
如何给Runnable线程传递参数?
查看>>
sql2008无法远程连接问题设置
查看>>
Python 自动补全(vim)
查看>>
封装 DBDA 类 StrQuery 、JSONQuery
查看>>
ADO.NET(一)
查看>>
[ruby on rails] 深入(1) ROR的一次request的响应过程
查看>>
最小生成树-Prim算法和Kruskal算法
查看>>
ScriptedSandbox64.exe 在写Winform程序Debug时不停提交数据
查看>>
js一些跳转网页以及自动弹出广告
查看>>
VMware-CnetOs--lamp环境
查看>>
SQL Server无法启动,错误代码 3417(太久没用,目录被压缩了)
查看>>
bzoj1854: [Scoi2010]游戏(匈牙利) / GDKOI Day2 T2(最大流)
查看>>