hdu 1875 畅通工程再续
2015-08-26 01:27
363 查看
模板走起
#include<iostream> #include<vector> #include<cmath> #include<cstdio> #define inf 1<<30 #define maxn 105 using namespace std; struct stu { int x,y; }; stu mapp[maxn]; int n; vector<int>root[maxn]; int vaule[maxn][maxn]; int visit[maxn]; void prim() { int d[maxn]; fill(d,d+maxn,inf); fill(visit,visit+maxn,0); double re=0; d[0]=0; int k=0; while(1) { int v=-1; for(int i=0;i<n;i++) { if(!visit[i]&&(v==-1||d[i]<d[v])) v=i; } if(v==-1||d[v]==inf) break; k++; re+=sqrt(d[v]); visit[v]=1; for(int i=0;i<root[v].size();i++) { int x=root[v][i]; d[x]=min(d[x],vaule[v][x]); } } if(k==n) printf("%.1lf\n",re*100); else cout<<"oh!"<<endl; } int main() { int t; cin>>t; while(t--) { cin>>n; for(int i=0;i<maxn;i++) root[i].clear(); for(int i=0;i<n;i++) { cin>>mapp[i].x>>mapp[i].y; for(int j=0;j<i;j++) { int l=pow(mapp[i].x-mapp[j].x,2)+pow(mapp[i].y-mapp[j].y,2); if(l<100||l>1000000) continue; root[i].push_back(j); root[j].push_back(i); vaule[i][j]=l; vaule[j][i]=l; } } prim(); } return 0; }
相关文章推荐
- HDU 2819 — Swap 二分匹配
- DELL 服务器 装系统前初始化(恢复出厂、超线程、虚拟化、iDRAC设置)
- php大力力 [018节]如何联系大力力
- hdu 1598 find the most comfortable road
- 将h.264视频流封装成flv格式文件
- 一个IP绑定多个域名的实现方法
- 我个沙茶,居然不会写基数排序
- java
- 正则表达式
- *Remove Duplicates from Sorted List
- 后缀数组(一)
- 构建工具Ant(二)—实践
- PAT-A 1064. Complete Binary Search Tree (30)
- Vs解决方案的目录结构设置和管理
- cocos2dx3.X shader使图片置灰
- websocket+webrtc+tomcat 实现视频监考功能
- hdoj 3376 Matrix Again and hdoj 2686 Matrix 【最大费用最大流】
- HTTP网络协议(一)
- Android 入门笔记--从零开始
- hdu2095 find your present (2)(异或)