poj3625
来源:互联网 发布:计算机二级c语言 翻译 编辑:程序博客网 时间:2024/06/02 16:12
注意要用double型读入否则精度有问题/* * poj3625.cpp * * Created on: 2010-8-18 * Author: friendy */
/* * poj3625.cpp * * Created on: 2010-8-18 * Author: friendy */#include<iostream>#include<cstdio>#include<cmath>#include<cstring>#include<algorithm>using namespace std;struct Edge{int s,t;double dis;bool operator<(const Edge &other)const{return dis<other.dis;}}edge[1000001];double sum=0;double point[1001][2];int map[1001][1001];int f[1001],rank[1001],n;void Init(){int i;for(i=1;i<=n;i++){f[i]=i;rank[i]=0;}}int Find(int x){if(x!=f[x])f[x]=Find(f[x]);return f[x];}void Union(int i,int j,int k){int x=Find(i);int y=Find(j);if(x==y)return ;sum+=sqrt((double)edge[k].dis);if(rank[x]>rank[y])f[y]=x;else{f[x]=y;if(rank[x]==rank[y])rank[y]++;}}int main(){int i,j,m,num,a,b;scanf("%d%d",&n,&m);for(i=1;i<=n;i++){scanf("%lf %lf",&point[i][0],&point[i][1]);}Init();memset(map,0,sizeof(map));for(i=0;i<m;i++){scanf("%d%d",&a,&b);map[a][b]=map[b][a]=1;}num=0;for(i=1;i<=n-1;i++){for(j=i+1;j<=n;j++){if(map[i][j]){edge[num].s=i;edge[num].t=j;edge[num].dis=0.0;num++;}else{edge[num].s=i;edge[num].t=j;edge[num].dis=(point[i][0]-point[j][0])*(point[i][0]-point[j][0])+(point[i][1]-point[j][1])*(point[i][1]-point[j][1]);num++;}}}sort(edge,edge+num);for(i=0;i<num;i++){Union(edge[i].s,edge[i].t,i);}printf("%.2f\n",sum);}
- poj3625
- poj3625
- POJ3625 Building Roads
- POJ3625—Prim实现
- poj3625 - Building Roads
- poj3625 解题报告
- POJ3625 最小生成树
- POJ3625 Building Roads
- POJ3625 Building Roads
- POJ3625 Building Roads
- poj3625——Building Roads
- poj3625 最小生成树 Prim
- 最小生成树模板(poj3625)
- poj3625 Building Roads(最小生成树)
- POJ3625 Building Roads(最小生成树,Kruskal)
- POJ3625—最小生成树+heap的实现
- JndiObjectFactoryBean渊源
- FLASH位宽为8、16、32时,CPU与外设之间地址线的连接方法
- 配置listener监听器
- 矩阵基本知识
- WEB页面信息的交互
- poj3625
- JAVA反射机制的学习
- Magento can't checkout and add product to cart in IE and Chrome
- Android processBar的应用
- amba start.S 分析 .weak作用
- HTML特殊字符编码
- 在Linux中安装小企鹅输入法
- java发送短消息
- 郁闷