POJ2349 prim算法
2016-01-31 15:15
260 查看
#include<iostream> #include<cstdio> #include<cmath> using namespace std; double x[1001],y[1001],a[1001][1001],d[1001],p[1001],ans[10001],asd[10001]; int main(){ int i,j,k,m,n; int t; cin>>t; int v=0; for(int q=1;q<=t;q++){ int u=0; cin>>m>>n; for(i=1;i<=n;i++) for(j=1;j<=n;j++){ a[i][j]=0; } for(i=1;i<=n;i++){ cin>>x[i]>>y[i]; p[i]=0;d[i]=10000000.0; } for(i=1;i<=n;i++) for(j=1;j<=n;j++){ a[i][j]=sqrt((x[i]-x[j])*(x[i]-x[j])+(y[i]-y[j])*(y[i]-y[j])); } d[1]=0; int min; for(i=1;i<=n;i++){ min=1000000000.0; for(j=1;j<=n;j++) if(!p[j] && d[j]<min){ k=j; min=d[j]; } p[k]=1; ans[++u]=d[k]; for(j=1;j<=n;j++) if(!p[j] && a[i][j]!=0 && d[j]>a[j][k]) d[j]=a[j][k]; } for(i=1;i<u;i++) for(j=i+1;j<=u;j++){ if(ans[i]<ans[j]){ int tmp; tmp=ans[i];ans[i]=ans[j];ans[j]=tmp; } } asd[++v]=ans[m]; for(i=1;i<=u;i++)ans[i]=0; } for(i=1;i<=t;i++){ cout<<asd[i]<<endl; } return 0; }
相关文章推荐
- 图的存储结构
- Android编程技巧之自定义 Log 工具
- [NOIP基础数论]最大公约数和最小公倍数
- 第四章 MySQL程序
- Python笔记之基本的语法
- linux xargs参数
- Wunder Fund Round 2016 F. Double Knapsack(two pointers + 鸽笼原理)
- ZJU-c
- mysql中support-files中相关的配置文件
- 周末私家菜谱
- 聊聊volatile关键字
- Android 区段加密
- Coursera Machine Learning 学习笔记(十二)
- 兄弟!!!
- 【转】Nginx+php-fpm+MySQL分离部署详解
- Web Pages
- 【校内互测】陈老师搬书
- 最小生成树kruskal
- C语言最小生成树prim算法(USACO3.1)
- hdoj 1829 A Bug's Life