UVa 10034 - Freckles
来源:互联网 发布:ib网络的网线 编辑:程序博客网 时间:2024/05/21 11:13
最小生成树,Kruskal算法。
代码如下:
#include <iostream>#include <algorithm>#include <cstring>#include <cstdlib>#include <cstdio>#include <cmath>using namespace std;const int MAXN = 5052;int n, p[MAXN], r[MAXN], u[MAXN], v[MAXN];double dis[MAXN], x[102], y[102], ans;int cmp(const int i, const int j){ return dis[i] < dis[j] ? 1 : 0;}int find(int i){ return p[i] == i ? i : p[i] = find(p[i]);}void Kruskal(){ ans = 0; for(int i=0; i<n; i++) p[i] = i; sort(r, r+n, cmp); for(int i=0; i<n; i++) { int e = r[i]; int xx = find(u[e]); int yy = find(v[e]); if(xx != yy) { ans += dis[e]; p[xx] = yy; } }}int main(){#ifdef test freopen("sample.txt", "r", stdin);#endif int t, num; scanf("%d", &t); while(t--) { n = 0; double d1, d2; scanf("%d", &num); for(int i=0; i<num; i++) scanf("%lf%lf", &x[i], &y[i]); for(int i=0; i<num; i++) for(int j=i+1; j<num; j++) { u[n] = i; v[n] = j; r[n] = n; d1 = double(x[i] - x[j]); d2 = double(y[i] - y[j]); dis[n++] = sqrt(d1*d1+d2*d2); } Kruskal(); printf("%.2lf\n", ans); if(t) puts(""); } return 0;}
- UVa 10034 Freckles
- UVa 10034 Freckles
- UVa 10034 Freckles
- UVA 10034 - Freckles
- UVA:10034 - Freckles
- UVa 10034 - Freckles
- UVa 10034 Freckles 解答
- UVA 10034 - Freckles
- Uva 10034 - Freckles
- UVA 10034 Freckles
- UVa 10034: Freckles
- UVa:10034 Freckles
- Uva - 10034 - Freckles
- UVA - 10034 Freckles
- UVa 10034 - Freckles
- Uva 10034 - Freckles
- UVA 10034 - Freckles
- uva 10034 - Freckles
- webservice soap wsdl 在.NET平台 j2ee平台 LAMP php 三大平台如何做webservice
- c++ 整形转字符
- [cocos2d-x 学习] Scene(场景)学习
- 复习java web 之 servlet(一)
- linux常用工具诊断工具使用示例1
- UVa 10034 - Freckles
- 编写信息管理系统时出现的问题。
- ExtJs的数据代理proxy
- 【Android】
- 消息推送(Server Push)
- Chrome下强制http重定向到https的方法——补充
- c 把一整数转换为字符串
- opensaml本地下载目录
- Python 在ubuntu下报 UnicodeDecodeError: 'ascii'错误