luogu P3366 最小生成树 模板

Posted Misaka_Azusa

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了luogu P3366 最小生成树 模板相关的知识,希望对你有一定的参考价值。

这里是kruskal做法

当然prim也可以,至于prim和kruskal的比较:

Prim在稠密图中比Kruskal优,Kruskal在稀疏图中比Prim优。

 1 #include<bits/stdc++.h>
 2 using namespace std;
 3 int fa[200001];
 4 struct edge{
 5     int u;
 6     int v;
 7     int w;
 8 }e[200001];
 9 int cmp(edge a,edge b)
10 {
11     return a.w<b.w;
12 }
13 int find(int x)
14 {
15     return fa[x]==x?x:fa[x]=find(fa[x]);
16 }    
17 long long cnt=0;
18 long long ans=0;
19 long long n,m;
20 int main()
21 {
22 
23     cin>>n>>m;
24     for(int i=1;i<=n;i++)
25     fa[i]=i;
26     
27     for(int i=1;i<=m;i++)
28     cin>>e[i].u>>e[i].v>>e[i].w;
29     
30     sort(e+1,e+1+m,cmp);
31     
32     for(int i=1;i<=m;i++)
33     {
34         if(cnt==n-1)
35         break;
36         int x=find(e[i].u);
37         int y=find(e[i].v);
38         if(x!=y)            
39         {
40             ans+=e[i].w;
41             fa[y]=x;            
42             cnt++;
43         }            
44         
45         
46     }
47     if(cnt!=n-1)
48     {
49         cout<<"orz";
50         return 0;
51     }
52     cout<<ans;
53     return 0;    
54 }

 

以上是关于luogu P3366 最小生成树 模板的主要内容,如果未能解决你的问题,请参考以下文章

P3366 模板最小生成树

P3366 模板最小生成树(Prim)

洛谷 P3366 模板最小生成树

洛谷P3366 模板最小生成树

洛谷 P3366 模板最小生成树 如题

P3366 模板最小生成树(boruvka/sollin)