ZOJ 1914 Arctic Network【kruskal】
2011-08-08 13:20
197 查看
//2619230 2011-08-08 13:18:12 Accepted 1914 C++ 130 4720 ylwh! #include <stdio.h> #include <string.h> #include <stdlib.h> #include <math.h> #include <algorithm> using namespace std; #define N 505 #define MAX 200000000 struct coordinates { int x, y; }l[505]; struct edge { int x, y; double len; int flag; }e[130000]; double map , d ; int pre ; int cmp(struct edge a, struct edge b) { return a.len < b.len; } double distence(double x, double y) { return (x*x+y*y); } int find_set(int x) { while(x != pre[x]) x = pre[x]; return x; } int main() { int n, s, p, x, y, i, j, k; scanf("%d", &n); while(n--) { scanf("%d%d", &s, &p); for(i=1; i<=p; i++) pre[i] = i; for(i=1; i<=p; i++) scanf("%d%d", &l[i].x, &l[i].y); k = 0; for(i=1; i<p; i++) for(j=i+1; j<=p; j++) { e[k].x = i; e[k].y = j; e[k].len = distence(l[i].x - l[j].x, l[i].y - l[j].y); e[k].flag = 0; k++; } sort(e, e+k, cmp); for(i=0; i<k; i++) { x = find_set(e[i].x); y = find_set(e[i].y); if(x != y) { pre[y] = x; e[i].flag = 1; } } j = 0; for(i=0; i<k; i++)//刚开始这里又对flag拍了一次序,结果超时 = = ! { if(e[i].flag) j++; if( j == p - s ) { printf("%.2lf\n", sqrt(e[i].len)); break; } } } return 0; }
相关文章推荐
- ZOJ 1914 Arctic Network (kruskal + prim )
- zoj 1914 || poj 2349 Arctic Network【最小生成树 kruskal && prim】
- zoj 1914 || poj 2349 Arctic Network(Prim~)
- ZOJ 1914 Prim Kruskal
- ZOJ 1914 Arctic Network 最小生成树
- zoj 1914 && poj 2349 Arctic Network
- zoj 1914 Arctic Network
- ZOJ 1914 Arctic Network (POJ 2349 UVA 10369) MST
- zoj 1914 Arctic Network
- ZOJ 1914 Arctic Network (POJ 2349 UVA 10369) MST
- ZOJ 1914 Arctic Network (POJ 2349) MST
- zoj 1914 poj 2349 Arctic Network
- POJ2349,ZOJ1914,Arctic Network
- zoj 1914 Arctic Network(最小生成树))
- ZOJ 1914 Arctic Network(解题报告)
- 最小生成树-并查集-Kruskal-zoj-2048-special judge
- POJ 2349 Arctic Network(Kruskal求最小生成树第k条边的长度)
- zoj 3204 Connect them kruskal
- POJ1251 || ZOJ1406 kruskal求最小生成树
- ZOJ 1203 Kruskal