并查集入门题 hd1232 poj2524 hd1233 hd1213
来源:互联网 发布:渲染软件主机配置 编辑:程序博客网 时间:2024/06/06 05:24
hd 1232
#include<iostream>using namespace std;int pre[1010],sum,n,m,i,j,a,b;;int find(int x){int r=x;while(pre[r]!=r) r=pre[r];int z=r,j; //路径压缩while(z!=r) j=pre[z],pre[z]=r,z=j; //将父亲节点的所有子树全给rreturn r;}void merge(int x,int y){int fx=find(x),fy=find(y);if(fx!=fy )pre[fx]=fy,sum--;}int main(){while(cin>>n&&n){cin>>m,sum=n-1;for(i=1;i<=n;i++)pre[i]=i;for(i=1;i<=m;i++)cin>>a>>b,merge(a,b);cout<<sum<<endl;}}
poj2524
#include<iostream>#include<string.h>#include<algorithm>using namespace std;int n,m,i,a,b,j=1;int pre[50000],hash[50005],sum;int find(int x){int r=x;while(pre[r]!=r) r=pre[r];int i=x,j;while(i!=r) j=pre[i],pre[i]=r,i=j;return r;}void merge(int x,int y){int fx=find(x),fy=find(y);if(fx!=fy)pre[fx]=fy;}int main(){while(cin>>n>>m,m,n){sum=0;memset(hash,0,sizeof(hash));for(i=1;i<=n;i++)pre[i]=i;while(m--)cin>>a>>b,merge(a,b);for(i=1;i<=n;i++) hash[find(i)]=1;for(i=1;i<=n;i++) sum+=hash[i];cout<<"Case "<<j++<<": "<<sum<<endl;}return 0;}hd1233
#include<iostream>#include<algorithm>#include<string.h>using namespace std;const int N=110;int pre[110],cd,n,i,j,sum;struct act{int x,y,z;}a[N*N];bool cmp(act a,act b){return a.z<b.z;}int find(int x){if(pre[x]==x) return x;return pre[x]=find(pre[x]);}bool merge(int x,int y){int fx=find(x),fy=find(y);if(fx==fy) return 0;if(fx<fy) pre[fy]=fx;else pre[fx]=fy;return 1;}int main(){while(cin>>n,n){sum=cd=0;int m=n*(n-1)/2;memset(pre,-1,sizeof(pre));for(i=0;i<m;i++)cin>>a[i].x>>a[i].y>>a[i].z;sort(a,a+m,cmp);for(i=0;i<n;i++)pre[i]=i;for(i=0;i<m;i++){if(merge(a[i].x,a[i].y)){sum+=a[i].z;cd++;}if(cd==n-1)break;}cout<<sum<<endl;}return 0;}
hd1213
#include<iostream>#include<string.h>using namespace std;int pre[50],t,n,m,a,b,sum,i;int find(int x){int r=x;while(r!=pre[r])r=pre[r];int i=x,j;while(i!=r) j=pre[i],pre[i]=r,i=j;return r;}void merge(int x,int y){int fx=find(x),fy=find(y);if(fx!=fy) pre[fx]=fy;}int main(){cin>>t;while(t--){cin>>n>>m;sum=0;for(i=1;i<=n;i++) pre[i]=i;for(i=1;i<=m;i++) cin>>a>>b,merge(a,b);for(i=1;i<=n;i++) if(find(i)==i) sum++;cout<<sum<<endl;getchar();}return 0;}
阅读全文
0 0
- 并查集入门题 hd1232 poj2524 hd1233 hd1213
- 并查集入门题集 POJ1611 POJ1703 POJ2524 POJ1182
- poj2524 Ubiquitous Religions 并查集入门
- POJ1611 && POJ2524 并查集入门
- POJ2524(并查集)
- poj2524(并查集)
- POJ2524-并查集
- poj2524 并查集
- poj2524 并查集
- POJ2524(并查集)
- POJ2524->并查集
- 并查集:poj2524:
- poj2524(并查集)
- POJ2524 并查集
- HD1232 畅通工程(并查集)
- POJ2524 Ubiquitous Religions 暨并查集入门
- POJ2524(并查集)
- POJ2524 并查集应用
- java SAX解析XML文档
- 2017年校招全国统一模拟笔试(第四场)_逃离农场
- JS高级基础知识
- Mac FTP 服务器简单使用
- Weex Android 动画揭秘
- 并查集入门题 hd1232 poj2524 hd1233 hd1213
- html中设置table的各个td的宽度
- vim编辑器最实用的技巧(入门专用,持续updating20170818)
- Javascript(一)
- JQ 监控Tab 按键
- 解密中企动力:80余家公司近万人个个都干营销 不骗你
- 关于模态框的那些事 angularjs
- POJ 1751 Highways
- SwitchButton 开关按钮