poj 2560_Freckles_并查集
来源:互联网 发布:大乐透软件0416ren 编辑:程序博客网 时间:2024/06/06 09:12
题目大意
就是一个最小生成树
思路
就是一个并查集优化的KURUSKAL
#include <stdio.h>#include <math.h>#include <algorithm>using namespace std;struct arr{ int x,y; float z;};float a[101][101];float b[101][3];arr d[10000];int f[101];int cam(arr x,arr y){ return x.z<y.z;}int find(int x){ if(!f[x]) return x; f[x]=find(f[x]); return f[x];}int insert(int x,int y){ if (find(x)!=find(y)) { f[find(x)]=find(y); return 1; } return 0;}int main(){ int n; scanf("%d",&n); for (int i=1;i<=n;i++) scanf("%f%f",&b[i][1],&b[i][2]); for (int i=1;i<=n;i++) { for (int j=1;j<=n;j++) a[i][j]=sqrt(((b[i][1]-b[j][1])*(b[i][1]-b[j][1]))+((b[i][2]-b[j][2])*(b[i][2]-b[j][2]))); } int k=0; float ans=0.0; for (int i=1;i<=n;i++) for (int j=1;j<=n;j++) if (i!=j) { k++; d[k].x=i; d[k].y=j; d[k].z=a[i][j]; } sort(d+1,d+k+1,cam); for (int i=1;i<=k;i++) { if (find(d[i].x)!=find(d[i].y)) { ans+=d[i].z; insert(d[i].x,d[i].y); } } printf("%0.2f\n",ans);}
1 0
- poj 2560_Freckles_并查集
- Poj 并查集
- poj并查集
- POJ 并查集
- POJ 2560Freckles(并查集)
- poj 2560 Freckles(并查集)
- poj 2524 并查集
- POJ 2236 并查集
- 并查集 POJ 2524
- 并查集 POJ 1611
- POJ 1182 并查集
- POJ 1703 并查集
- POJ 2492 并查集
- poj-1308 并查集
- poj-1703 并查集
- poj-2524 并查集
- 【并查集】POJ-1611
- POJ - 2492 并查集
- 委托详解(匿名函数、Lamda表达式、多播委托)
- 5.7 Swift变参函数.mp4
- 有关C++模版
- 如何使用HttpWebRequest POST数据时设置Connection="Keep-Alive"
- thinkphp照片文件上传
- poj 2560_Freckles_并查集
- SLAM基础知识总结
- android Fragments详解四:管理fragment
- React 入门实例教程
- powerdesigner palette 画表工具
- 访问修饰符
- 内部类
- java 不使用 “+,-,*,/” 运算符计算两个整数的和
- LZW算法的流程