hdu 1863 畅通工程
来源:互联网 发布:中国软件外包印度差距 编辑:程序博客网 时间:2024/06/05 22:52
#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; double t,sum; while(~scanf("%d%d",&n,&m)) { if(n==0) break; for(i=0;i<=m;i++) bin[i]=-1; for(i=0;i<n;i++) { scanf("%d%d%d",&e[i].u,&e[i].v,&e[i].w); } sort(e,e+n,cmp); sum=0; num=0; for(i=0;i<n;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; } if(num>=m-1) printf("%d\n",sum); else printf("?\n"); } return 0;}
0 0
- HDU 1863 畅通工程
- hdu 1863 畅通工程
- hdu 1863 畅通工程
- HDU 1863 畅通工程
- hdu 1863 畅通工程
- hdu 1863 畅通工程
- hdu 1863 畅通工程
- HDU 1863 畅通工程
- hdu 1863 畅通工程
- HDU 1863 畅通工程
- hdu 1863 畅通工程
- hdu 1863 畅通工程
- hdu 1863 畅通工程
- HDU-畅通工程-1863
- HDU 1863 畅通工程
- hdu 1863 畅通工程
- HDU 1863 畅通工程
- hdu 1863 畅通工程
- 22-UICollectionView
- Swift开发教程--如何去掉UITableViewController黑色线条
- #27 Remove Element
- 程序设计与分析之分治法(1)--超长整数计算
- 数据结构之二叉树(遍历、建立、深度)
- hdu 1863 畅通工程
- Cookie-网站登录-下次自动登录
- 23-团队分工 Storyboard
- 股票学习25
- 我的关于编程中调用系统库的过程始终不理解???这篇文件解析了pe文件的结构
- swift中的闭包
- 深入理解java垃圾回收机制
- BufferedImage
- codeforces 558D Guess Your Way Out! II