POJ 2560
2015-06-11 11:35
295 查看
#include<iostream> #include<algorithm> #include<cmath> #include<iomanip> #define MAXN 105 #define inf 1000000000 using namespace std; typedef double elem_t; double point[MAXN][2]; double _m[MAXN][MAXN]; int pre[MAXN]; elem_t prim(int n,elem_t mat[][MAXN],int* pre); int main() { //freopen("acm.acm","r",stdin); int num; int i; int j; double x; double y; cin>>num; for(i = 0; i < num; ++ i) { cin>>point[i][0]>>point[i][1]; } for(i = 0; i < num; ++ i) { for(j = i+1; j < num; ++ j) { _m[i][j] = sqrt((point[i][0] - point[j][0])*(point[i][0] - point[j][0]) + (point[i][1] - point[j][1])*(point[i][1] - point[j][1])); _m[j][i] = _m[i][j]; } } cout<<setiosflags(ios::fixed)<<setprecision(2)<<prim(num,_m,pre)<<endl; } elem_t prim(int n,elem_t mat[][MAXN],int* pre){ elem_t min[MAXN],ret=0; int v[MAXN],i,j,k; for (i=0;i<n;i++) min[i]=inf,v[i]=0,pre[i]=-1; for (min[j=0]=0;j<n;j++){ for (k=-1,i=0;i<n;i++) if (!v[i]&&(k==-1||min[i]<min[k])) k=i; for (v[k]=1,ret+=min[k],i=0;i<n;i++) if (!v[i]&&mat[k][i]<min[i]) min[i]=mat[pre[i]=k][i]; } return ret; }
相关文章推荐
- 完美实现浮动元素横排居中显示
- Java String.Format() 方法及参数说明
- Android设备免root无线通过adb连接PC
- Xcode里-ObjC, -all_load, -force_load
- STL中set用法详解
- Mac下的eclipse中svn插件使用代理
- DistributedCache小记
- sybase与oracle的区别
- 添加AWS卷
- 完全卸载memcached的方法(CentOS)
- POJ 2551
- 最长回文子串-LeetCode 5 Longest Palindromic Substring
- JavaScript中的setMilliseconds()方法使用详解
- Android Studio 主题设置
- 整合hibernate4.2和spring框架,出现No Session found for current threa报错
- 数据库编程接口---- 绑定参数(Bound Parameters)
- Cookie禁用了,Session还能用吗?
- 虚幻4游戏开发_4_导入fbx和编辑
- 阻塞read/write型socket网络连接弊端——缓冲区堆积——linux网络编程学习
- POJ 2545