hdu 1879 继续畅通工程
来源:互联网 发布:手机专业相机软件 编辑:程序博客网 时间:2024/04/30 04:49
#include <stdio.h>#include <string.h>#include <iostream>#include <algorithm>#include <vector>#include <queue>#include <set>#include <map>#include <string>#include <math.h>#include <stdlib.h>#include <time.h>using namespace std;struct data{ int u,v; double w;}e[5000];bool cmp(data a, data b){ return a.w<b.w;}double x[100+5],y[100+5];int n,m,bin[5000];int Find(int x){ int s; for(s=x;bin[s]>=0;s=bin[s]); while(s!=x) { int t=bin[x]; bin[x]=s; x=t; } return s;}void Union(int x1,int x2){ int f1=Find(x1),f2=Find(x2); int t=bin[f1]+bin[f2]; if(bin[f1]>bin[f2]) { bin[f1]=f2; bin[f2]=t; } else { bin[f2]=f1; bin[f1]=t; }}int main(){ int i,j,cas=0,num,u,v,d; double t,sum; while(~scanf("%d",&n)) { if(n==0) break; m=n*(n-1)/2; for(i=0;i<=n;i++) bin[i]=-1; num=0; for(i=0;i<m;i++) { scanf("%d%d%d%d",&e[i].u,&e[i].v,&e[i].w,&d); if(d==1) {Union(e[i].u,e[i].v);num++;} } sort(e,e+m,cmp); sum=0; for(i=0;i<m;i++) { u=e[i].u; v=e[i].v; if(Find(u)!=Find(v)) { sum+=e[i].w; Union(u,v); num++; } if(num>=m-1) break; } printf("%d\n",sum); } return 0;}
0 0
- HDU 1879 继续畅通工程
- 继续畅通工程 hdu 1879
- hdu 1879 继续畅通工程
- HDU 1879 继续畅通工程
- hdu 1879 继续畅通工程
- hdu 1879 继续畅通工程
- HDU 1879 继续畅通工程
- hdu 1879 继续畅通工程
- hdu 1879 继续畅通工程
- hdu 1879 继续畅通工程
- HDU 1879 继续畅通工程
- hdu 1879 继续畅通工程
- hdu - 1879 - 继续畅通工程
- hdu 1879 继续畅通工程
- hdu 1879 继续畅通工程
- hdu 1879 继续畅通工程
- hdu 1879(继续畅通工程)
- hdu 1879 继续畅通工程
- 2015年07月03日第三天笔记
- Node:Trie数(字典树)
- 19-linux中一些命令
- 无线互联01
- 2015年07月04日第四天笔记
- hdu 1879 继续畅通工程
- 安静的转换有多安静?
- 黑马程序员--Objective-C语言基础知识--特有语法
- leetCode(43):Product of Array Except Self
- 2015年07月06日第五天笔记
- Two big challenges in machine learning
- PHP数组的使用方法小结
- hdu 3068 最长回文 (Manacher模版)
- 如何升级openssl到最新版本 ubuntu