poj2031 kruskal
来源:互联网 发布:淘宝上新怎么抢的快 编辑:程序博客网 时间:2024/04/28 17:34
http://poj.org/problem?id=2031
#include<iostream>#include<algorithm>#include<cmath>#include<cstdio>using namespace std;double a[101][4];double esp = 0.0000001;struct edge{ int u,v; double w;} e[5000];int tree[101];int cmp( const void *a ,const void *b){ return (*(edge *)a).w > (*(edge *)b).w ? 1 : -1 ;}int main(){ int n; //freopen("1.txt","r",stdin); while (cin>>n,n) { int i,j; for (i = 0; i < n; ++i) cin >> a[i][0] >> a[i][1] >> a[i][2] >> a[i][3]; int k = 0; for (i = 0; i < n-1; ++i) for (j = i+1; j < n; ++j) { e[k].u = i; e[k].v = j; double temp = sqrt( (a[i][0]-a[j][0])*(a[i][0]-a[j][0]) +(a[i][1]-a[j][1])*(a[i][1]-a[j][1]) +(a[i][2]-a[j][2])*(a[i][2]-a[j][2]) )- a[i][3] - a[j][3]; if (temp < esp) e[k].w = 0; else e[k].w = temp; ++k; } qsort(e,k,sizeof(e[0]),cmp); for (i = 0; i < n; ++i) tree[i] = i; double total = 0; for (i = 0; i < k; ++i) { int m1 = tree[e[i].u]; int m2 = tree[e[i].v]; if (m1 != m2) { total += e[i].w; for (j = 0; j < n; ++j) if (tree[j] == m2) tree[j] = m1; } } printf("%.3f\n",total); } return 0;}
- poj2031 kruskal
- poj2031
- poj2031
- poj2031
- poj2031
- POJ2031
- poj2031
- poj2031 Building a Space Station 最小生成树,kruskal
- poj2031-Building a Space Station(最小生成树,kruskal,prime)
- poj2031 prim
- POJ2031 POJ
- poj2031 最小生成树
- poj2031 最小生成树
- POJ2031 最小生成树
- poj2031(prim)
- Kruskal
- kruskal
- kruskal
- hdu1175 bfs
- poj1861 kruskal
- poj 1251 kruskal
- poj1287 kruskal
- poj2421 kruskal
- poj2031 kruskal
- zoj 1586 prim
- codeforces 334A
- zoj 2158 prim
- 精通软件性能测试与LoadRunner最佳实战 连载十一
- 最小生成树-prim算法模板
- poj 3984 bfs
- git错误解决
- 【ubuntu】使用ubuntu过程中的入门