最小生成树变形uva534
来源:互联网 发布:python 数学库 开平方 编辑:程序博客网 时间:2024/06/06 02:58
Kruskal第一次连接的时候就是最小值
#include<bits/stdc++.h>using namespace std;const int maxn=210;int pra[maxn],rank1[maxn];int n,num;struct point{int x,y;}p[maxn];struct node{ int u,v; double dis; bool operator<(const node &a)const { return dis<a.dis; }}edge[40010];void init(){ num=0; for(int i=0;i<=n;i++) pra[i]=i,rank1[i]=0;}double cal(int a,int b){ return sqrt((p[a].x-p[b].x)*(p[a].x-p[b].x)+(p[a].y-p[b].y)*(p[a].y-p[b].y));}void add_edge(int u,int v,double d){ edge[num].u=u; edge[num].v=v; edge[num++].dis=d;}void process(int m){ for(int i=0;i<m;i++) { double d=cal(i,m); add_edge(i,m,d); }}int find1(int x){ if(x==pra[x])return x; return pra[x]=find1(pra[x]);}void unite(int x,int y){ if(rank1[x]<rank1[y]) pra[x]=y; else { pra[y]=x; if(rank1[x]==rank1[y])rank1[x]++; }}int main(){ //freopen("in.txt","r",stdin); int cas=1; while(scanf("%d",&n)!=EOF,n) { init(); for(int i=0;i<n;i++) { scanf("%d%d",&p[i].x,&p[i].y); process(i); } sort(edge,edge+num); printf("Scenario #%d\n",cas++); for(int i=0;i<num;i++) { int x=find1(edge[i].u); int y=find1(edge[i].v); if(x!=y)unite(x,y); if(find1(0)==find1(1)) { printf("Frog Distance = %.3f\n",edge[i].dis); break; } } printf("\n"); } return 0;}
0 0
- 最小生成树变形uva534
- 最小生成树变形题
- SGU 323 Aviamachinations 最小生成树变形
- HDU 4081 最小生成树变形
- hdu4081(最小生成树变形)
- URAL 1982 最小生成树变形
- hdu 4463(最小生成树变形)
- hdu 4081 最小生成树变形
- 【最小生成树变形】HDU 3367
- uva1395(最小瓶颈生成树变形)
- poj2253flody变形(最小生成树)
- Conscription 3723(最小生成树变形)
- hdu4081(最小生成树变形,prim)
- hdu 1598(最小生成树变形)
- poj 1789 最小生成树变形
- Uva1395.Slim Span(最小生成树变形)
- POJ 2253 最小生成树的变形
- uva534
- Myeclipse svn 安装
- JSF2.0实战 - 4、自定义组件
- CSS :first-child 选择器
- CSS 子元素选择器
- 抽象类
- 最小生成树变形uva534
- C#_ajax_demo
- 内存中堆区与栈区的区别
- C#_MVC_ajax for form
- cortex A9 GIC
- F8大会不能错过的精彩看点:推新移动广告形式
- Android 中的用HorizontalScrollView布局实现类似Gallery效果
- C#_mvc_ajax_return data
- 图的常用存储结构----邻接矩阵