POJ 2560Freckles(并查集)
2016-12-15 17:41
411 查看
题意:
找出一条最短路,额…….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.
相关文章推荐
- poj 2560 Freckles(并查集)
- poj 2560_Freckles_并查集
- POJ 2560 Freckles
- POJ 2560 Freckles
- POJ 2560 Freckles
- poj 2560 Freckles 雀斑
- poj 2560 uva 10034 - Freckles
- poj - 2560 Freckles
- POJ-2560 Freckles
- poj_2560 Freckles
- POJ2560 Freckles
- POJ 2560 Freckles
- Poj 2560 || Hdu 1162 Freckles--最小生成树
- poj 2560 Freckles
- poj 2560 Freckles
- poj 2560 Freckles
- POJ2560_Freckles_最小生成树
- POJ 2560 Freckles
- POJ 2560 Freckles------最小生成树(水啊)
- poj 2560Freckles (krusual)