HDU 1875 畅通工程再续
来源:互联网 发布:罗技逆战宏编程 编辑:程序博客网 时间:2024/06/05 02:12
#include<stdio.h>#include<string.h>#include<math.h>const int INF = 0x3f3f3f3f;const int maxn = 1e3;double mp[maxn][maxn]; // 存图; int vis[maxn]; //是否在新图内; double dis[maxn]; //第i个顶点到新图最短距离; double prim(int n);struct node{double x;double y;}nodes[maxn];int n,m;int main (){int t;scanf("%d",&t);int cun1,cun2,cost;double ans = 0;for (int cas = 0; cas < t; cas++){scanf("%d", &m);memset(mp,0x3f,sizeof(mp));for (int i = 0; i < m; i++){scanf("%lf%lf", &nodes[i].x ,&nodes[i].y);}for (int i = 0; i < m; i++){for (int j = 0; j < m; j++){mp[i][j] =sqrt((nodes[i].x - nodes[j].x) *(nodes[i].x - nodes[j].x) +(nodes[i].y - nodes[j].y) *(nodes[i].y - nodes[j].y)) ;if (mp[i][j] < 10 || mp[i][j] > 1000){mp[i][j] = INF;}}}ans = prim(m);if (ans == -1)printf("oh!\n");else printf("%.1f\n",ans*100);}}double prim(int n){double ans = 0;memset(vis,0,sizeof(vis));vis[0] = 1; //注意第一个点的初始化; for (int i = 0; i < n; i++)dis[i] = mp[0][i]; // 新图第一个点为0,初始化dis; for (int i = 1; i < n; i++){ // 加入第i+1个点 double minn = INF; // 旧图到新图最短距离 int pos = -1; // 旧图最近点标号; for (int j = 0; j < n; j++){if(!vis[j] && minn > dis[j]) {minn = dis[j];pos = j;}}if (minn == INF) return -1;ans += minn; //更新答案; vis[pos] = 1;for (int j = 0; j < n; j++) {if (!vis[j] && mp[pos][j] < dis[j]){dis[j] = mp[pos][j];}}}return ans;}
阅读全文
0 0
- HDU 1875 畅通工程再续
- HDU 1875 畅通工程再续
- acm hdu 1875 畅通工程再续
- hdu 1875 畅通工程再续 (kruskal)
- hdu 1875 畅通工程再续
- HDU 1875 畅通工程再续
- hdu 1875 畅通工程再续
- hdu 1875 畅通工程再续
- hdu 1875 畅通工程再续
- HDU 1875 畅通工程再续
- hdu 1875 畅通工程再续
- hdu 1875 畅通工程再续
- hdu 1875 畅通工程再续
- HDU-1875-畅通工程再续
- HDU-畅通工程再续-1875
- hdu 1875 畅通工程再续
- HDU 1875 畅通工程再续
- hdu(1875)畅通工程再续
- Mac下 常用程序 无限试用方法
- exynos4412中文手册(31章)USB2.0 Host Controller
- Jmeter测试SSL(HTTPS协议)
- 多维卷积与一维卷积的统一性(运算篇)
- 【CodeForces 830A】Office Keys
- HDU 1875 畅通工程再续
- Oil Deposits
- C++ 和 python 联合调试
- 再论向上转型
- JS的事件委托/代理(delegate)
- codeforces 776C
- CF471D MUH and Cube Walls(差分+KMP)
- button、a标签、input button的区别
- Swift3.0中的Json对象和Json字符串