HDU1875 还是畅通工程
来源:互联网 发布:电视台剪辑软件 编辑:程序博客网 时间:2024/05/02 08:43
与之前的畅通工程类似,求最小生成树,只是要剔除不符合条件的边,还要判断是否是连通图(这个磨蹭了很长时间,只要判断加入集合的点数与题目给出的点数是否相等即可)。
#include<iostream>#include<math.h>#include<algorithm>#include<cstdio>using namespace std;#define NUM 103struct point{ int x; int y;}pos[NUM];struct dist{ int start; int end; double val;}dis[NUM * NUM];int cmp(const dist& a,const dist &b){ return a.val < b.val;}double findDistance(struct point a,struct point b){ return sqrt((double)(a.x-b.x)*(a.x-b.x)+(double)(a.y-b.y)*(a.y-b.y));}int set[NUM];int vex;void init(){ for(int i=0;i<=NUM;i++){ set[i]=i; }}int find(int x){ int r=x; while(r!=set[r]) r=set[r]; return r;}void merge(int a,int b){ int x=find(a); int y=find(b); if(x!=y) { set[y]=x; vex++; }}int isValid(double x){ if(x>=10&&x<=1000) return 1; else return 0;}int main(){ int t,c,i,j,index,flag; double sum; cin>>t; while(t--) { sum=0.0; flag=0; init(); cin>>c; for(i=0;i<c;i++){ cin>>pos[i].x>>pos[i].y; } if(c==1){ printf("0.0\n"); continue; } index=0; vex=1; for(i=0;i<c;i++) for(j=i+1;j<c;j++){ double mi=findDistance(pos[i],pos[j]); if(isValid(mi)){ dis[index].start=i; dis[index].end=j; dis[index++].val=mi; } } sort(dis,dis+index,cmp); for(i=0;i<index;i++){ if(find(dis[i].start)!=find(dis[i].end)&&isValid(dis[i].val)){ merge(dis[i].start,dis[i].end); sum+=dis[i].val; } } if(vex<c) printf("oh!\n"); else printf("%.1lf\n",sum*100); } return 0;}
0 0
- HDU1875 还是畅通工程
- 畅通工程再续 hdu1875
- hdu1875 畅通工程再续
- HDU1875--畅通工程再续
- hdu1875-畅通工程再续
- HDU1875畅通工程再续
- HDU1875畅通工程再续
- hdu1875 畅通工程再续
- HDU1875畅通工程再续
- HDU1875 畅通工程再续
- HDU1875---畅通工程再续
- HDU1875( 畅通工程再续)
- hdu1875畅通工程再续
- HDU1875 畅通工程再续
- 畅通工程再续||HDU1875
- hdu1875 畅通工程再续
- HDU1875 畅通工程再续【Prim】
- HDU1875:畅通工程再续【Kruskal & Prim】
- 女性月经忽多忽少一定要注意(分享)
- Git修改的撤销
- JXL生成excel,从本地图片导入excel等等
- 弧度的定义? 180度(角度)=3.14(3.14弧度)
- 载JDK 1.8命令,直接下载
- HDU1875 还是畅通工程
- 关于VS2013未找到与约束ContractName Microsoft.VisualStudio.Text.ITextDocumentFactoryService...匹配的导出
- Android开发工具之一:emulator、adb和sqlite3
- wamp安装pthreads扩展(PHP多线程)
- 第十二周项目一 教师干部的多继承
- HDU 1023 (卡特兰数)
- android中的网络编程
- 一,Spring初探
- Linux设备驱动之Ioctl控制