HDOH 1879 Kruskal算法
来源:互联网 发布:编程珠玑 英文版 pdf 编辑:程序博客网 时间:2024/06/05 07:00
#include"iostream"#include"algorithm"using namespace std;const int maxn=5000;int pre[maxn];int rk[maxn];void init(int n){ for(int i=1;i<=n;i++) { rk[i]=0; pre[i]=i; }}int find(int x){ return pre[x]==x?x:pre[x]=find(pre[x]);}bool join(int x,int y){ x=find(x); y=find(y); if(x!=y) { if(rk[x]==rk[y]) { pre[y]=x; rk[x]++; } else if(rk[x]<rk[y]) pre[x]=y; else pre[y]=x; return true; } return false;}struct road{ int u,v,w,flag;}r[maxn];bool cmp(road a,road b){ return a.w<b.w;}int main(){ //freopen("a.txt","r",stdin); int n; while(cin>>n,n) { int count=0; init(n); for(int i=0;i<n*(n-1)/2;i++) { scanf("%d%d%d%d",&r[i].u,&r[i].v,&r[i].w,&r[i].flag); if(r[i].flag) { join(r[i].u,r[i].v); count++; } } sort(r,r+n*(n-1)/2,cmp); int ans=0; for(int i=0;i<n*(n-1)/2;i++) { int s=r[i].w; if(join(r[i].u,r[i].v)){ count++; ans+=s; } if(count==n-1) break; } if(count==n-1) cout<<ans<<endl; } return 0;}
G
0 0
- HDOH 1879 Kruskal算法
- Kruskal算法
- Kruskal算法
- Kruskal算法
- kruskal算法
- Kruskal算法
- Kruskal算法
- Kruskal算法
- Kruskal算法
- kruskal算法
- kruskal算法
- kruskal算法
- Kruskal算法
- kruskal算法
- Kruskal算法
- Kruskal算法
- Kruskal算法
- Kruskal算法
- TCP连接关闭—close和shutdown
- centos下安装ZooKeeper
- 选择排序算法(Java)
- MFC中创建QT窗体
- MySQL必知必会笔记(二)SELECT语句 检索 排序 过滤 通配符搜索 正则表达式搜索
- HDOH 1879 Kruskal算法
- JS笔记:函数闭包及柯里化
- 【Oracle_SQL性能优化】系列目录
- tomcat原理简析和对比jetty
- Java实现邮件发送
- poj 3744 Scout YYF I (概率DP&矩阵快速幂)★
- HDOJ 1863 Kruskal算法
- 树的子结构
- ZBar扫描二维码第三方的使用方法