hdu-1875
来源:互联网 发布:淘宝帐号实名认证在哪 编辑:程序博客网 时间:2024/04/29 08:23
最小生成树 注意浮点型 :
#include<stdio.h>#include<iostream>#include<math.h>#include<stdlib.h>#include<ctype.h>#include<algorithm>#include<vector>#include<string.h>#include<queue>#include <stdio.h>#include <string.h>#define N 1100using namespace std;double p[110][110];double low[1000];int vis[1000];int n;struct qq{ int x; int y;}q[10000];double getdis (qq a, qq b){ return ( double (a.x*1.0-b.x*1.0)*(a.x*1.0-b.x*1.0) + (a.y*1.0-b.y*1.0)*(a.y*1.0-b.y*1.0) ) ;}double prim (){ int i,j,pos; double res,min; memset (vis,0,sizeof (vis)); res=0; pos=1;vis[1]=1; for (int i=1;i<=n;i++) { if (i!=pos) low[i]= p[i][pos]; } for (int j=1 ;j<n;j++) { min = 1000000; for (int i=1;i<=n;i++) { if (!vis [i] && min > low[i] ) { pos =i; min = low[i]; } } if (min == 1000000) return -1; res+=min; vis[pos]=1; for (int i=1;i<=n;i++) { if (!vis[i] && low[i] > p[i][pos]) { low[i]= p[i][pos]; } } } return res*100;}int main (){ int t; cin >>t; while (t--) { cin >>n; for (int i=1;i<=n;i++) { cin>>q[i].x>>q[i].y; } for (int i=1;i<=n;i++) for (int j=1;j<=n;j++) { if (i!=j) p[i][j] = 10000000; else p[i][j]=0; } for (int i=1;i<=n;i++) for (int j=1;j<=n;j++) { if (getdis(q[i],q[j]) >=10*10 && getdis(q[i],q[j])<= 1000*1000) { p[i][j] = sqrt( 1.0*getdis(q[i],q[j]) ) ; } } if ( prim() == -1) printf("oh!\n"); else printf("%0.1f\n",prim()); } return 0;}
0 0
- hdu 1863 hdu 1879 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
- hdu 1875 hdoj 1875
- hdu 1875 Prim
- hdu 1875 水过~
- HDU 1875 Word Puzzle
- SecurityError:Error #2048:安全沙箱冲突
- 技术文档,完成课程表的抓包操作
- Audio笔记之MixerThread::prepareTracks_l
- Android 官方文档之Activity和Task
- vi 命令
- hdu-1875
- MiniFilter简介
- phonegap file操作
- Linux常用命令大全
- 面试题积累(二)
- 怎么使用jquery创建一个提示工具
- 活泼的行文 推荐 《构建之法 - 现代软件工程》 邹欣著
- Redis常用命令
- NScoder和NScoding简析