POJ 2560Freckles(并查集)
来源:互联网 发布:元数据管理工具 编辑:程序博客网 时间:2024/05/16 10:24
题意:
找出一条最短路,额…….n<100;
思路:
并查集最短路搞一波,然后就没了….
时间复杂度
O(**)
type arr=record x,y:longint; w:real; end;const maxn=100;var a:array [0..maxn*maxn] of arr; f:array [0..maxn*maxn] of longint; x,y:array [0..maxn*maxn] of real; i,j,n,m,p:longint; ans:real;procedure qsort(l,r:longint);var i,j:longint; mid:real;begin i:=l; j:=r; mid:=a[(l+r) div 2].w; while i<j do begin while a[i].w<mid do inc(i); while a[j].w>mid do dec(j); if i<=j then begin a[0]:=a[i]; a[i]:=a[j]; a[j]:=a[0]; inc(i); dec(j); end; end; if i<r then qsort(i,r); if l<j then qsort(l,j);end;function father(x:longint):longint;var i,j:longint;begin if x<>f[x] then father:=father(f[x]) else father:=x; f[x]:=father;end;begin readln(n); for i:=1 to n do readln(x[i],y[i]); for i:=1 to n do for j:=1 to n do begin inc(p); a[p].w:=sqrt(sqr(x[i]-x[j])+sqr(y[i]-y[j])); a[p].x:=i; a[p].y:=j; end; qsort(1,p); for i:=1 to p do f[i]:=i; for i:=1 to p do if f[father(a[i].x)]<>f[father(a[i].y)] then begin f[father(a[i].x)]:=f[father(a[i].y)]; ans:=ans+a[i].w; end; writeln(ans:0:2);end.
0 0
- POJ 2560Freckles(并查集)
- poj 2560 Freckles(并查集)
- POJ 2560 Freckles 最小生成树 Kruskal+并查集使用
- 并查集专题-1001 Freckles
- poj 2560Freckles (krusual)
- uva_10034 Freckles Kruskal (使用并查集) 或Prim
- POJ 2560 Freckles(最小生成树)
- Poj 2560 Freckles
- poj 2560 Freckles
- POJ 2560 Freckles
- POJ 2560 Freckles
- POJ-2560 Freckles
- POJ 2560 Freckles
- poj 2560 Freckles
- POJ 2560 Freckles
- POJ 2560 Freckles
- POJ 2560 Freckles
- poj 2560 Freckles
- 日积月累的jit-lib方法,
- java引用形参实参运行结果
- 黑客技能表
- Home点击监听及示例
- HTML5 Geolocation API (地理位置应用程序接口)获取地理位置
- POJ 2560Freckles(并查集)
- AsyncTask 内部实现机制
- shell中的函数
- 面向对象练习题
- 自己实现将整型转化为字符型
- MySQL server has gone away
- AngularJS实现跨域请求
- Ubuntu16.04下安装ns2.35
- 如何合理地估算线程池大小