洛谷 P3366 【模板】最小生成树
2017-02-11 14:05
316 查看
题目描述
如题,给出一个无向图,求出最小生成树,如果该图不连通,则输出orz
输入输出格式
输入格式:
第一行包含两个整数N、M,表示该图共有N个结点和M条无向边。(N<=5000,M<=200000)
接下来M行每行包含三个整数Xi、Yi、Zi,表示有一条长度为Zi的无向边连接结点Xi、Yi
输出格式:
输出包含一个数,即最小生成树的各边的长度之和;如果该图不连通则输出orz
输入输出样例
输入样例#1:
4 5
1 2 2
1 3 2
1 4 3
2 3 4
3 4 3
输出样例#1:
7
说明
时空限制:1000ms,128M
数据规模:
对于20%的数据:N<=5,M<=20
对于40%的数据:N<=50,M<=2500
对于70%的数据:N<=500,M<=10000
对于100%的数据:N<=5000,M<=200000
所以最小生成树的总边权为2+2+3=7
分析:最小生成树模版题。
(并查集+排序+Kruskal算法)
代码:
如题,给出一个无向图,求出最小生成树,如果该图不连通,则输出orz
输入输出格式
输入格式:
第一行包含两个整数N、M,表示该图共有N个结点和M条无向边。(N<=5000,M<=200000)
接下来M行每行包含三个整数Xi、Yi、Zi,表示有一条长度为Zi的无向边连接结点Xi、Yi
输出格式:
输出包含一个数,即最小生成树的各边的长度之和;如果该图不连通则输出orz
输入输出样例
输入样例#1:
4 5
1 2 2
1 3 2
1 4 3
2 3 4
3 4 3
输出样例#1:
7
说明
时空限制:1000ms,128M
数据规模:
对于20%的数据:N<=5,M<=20
对于40%的数据:N<=50,M<=2500
对于70%的数据:N<=500,M<=10000
对于100%的数据:N<=5000,M<=200000
所以最小生成树的总边权为2+2+3=7
分析:最小生成树模版题。
(并查集+排序+Kruskal算法)
代码:
var p,r:array [1..10001] of longint; a:array [1..200001,1..3] of longint; n,m,p1,u,v,w,ans,k,i:longint; function find(x:longint):longint; var y,root,w:longint; begin y:=x; while p[y]>0 do y:=p[y]; root:=y; y:=x; while p[y]>0 do begin w:=p[y]; p[y]:=root; y:=w; end; find:=root; end; procedure union(x,y:longint); var u,v:longint; begin u:=find(x); v:=find(y); if u=v then exit; if r[u]<=r[v] then begin p[u]:=v; if r[u]=r[v] then inc(r[v]); end else p[v]:=u; end; procedure qsort(l,r:longint); var i,j,key,temp:longint; begin if l>=r then exit; i:=l;j:=r; key:=a[l+random(r-l+1),3]; repeat while (a[i,3]<key) do inc(i); while (a[j,3]>key) do dec(j); if i<=j then begin temp:=a[i,1];a[i,1]:=a[j,1];a[j,1]:=temp; temp:=a[i,2];a[i,2]:=a[j,2];a[j,2]:=temp; temp:=a[i,3];a[i,3]:=a[j,3];a[j,3]:=temp; inc(i);dec(j); end; until i>j; qsort(l,j); qsort(i,r); end; begin readln(n,m); for i:=1 to m do begin readln(u,v,w); inc(k); a[k,1]:=u; a[k,2]:=v; a[k,3]:=w; end; qsort(1,k); for i:=1 to k do begin if find(a[i,1])<>find(a[i,2]) then begin union(a[i,1],a[i,2]); ans:=ans+a[i,3]; end; end; write(ans); end.
相关文章推荐
- 洛谷P3366 【模板】最小生成树
- 洛谷P3366 【模板】最小生成树
- 洛谷——P3366 【模板】最小生成树
- 洛谷 P3366 【模板】最小生成树
- 洛谷 P3366 【模板】最小生成树
- 洛谷 P3366 【模板】最小生成树
- P3366 最小生成树【模板】 洛谷
- P3366 【模板】最小生成树
- P3366 【模板】最小生成树
- P3366 【模板】最小生成树
- P3366 【模板】最小生成树
- 最小生成树(模板)洛谷3366
- 洛谷3366 最小生成树模板题
- [洛谷3366]【模板】最小生成树
- P3366 【模板】最小生成树
- 洛谷——最小生成树模板
- 洛谷 [模板]最小生成树
- 最小生成树kruskal 并查集合 模板题
- POJ 2485 Highways【最小生成树最大权——简单模板】
- poj 1258 【最小生成树】【prim】【纯模板】