[洛谷3366]模板最小生成树

Posted skylee的OI博客

tags:

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

思路:Kruskal

 1 #include<cstdio>
 2 #include<utility>
 3 #include<algorithm>
 4 #define w first
 5 #define a second.first
 6 #define b second.second
 7 const int N=5001;
 8 typedef std::pair<int,std::pair<int,int> > Edge;
 9 class UnionFindSet {
10     private:
11         int anc[N];
12     public:
13         UnionFindSet(int n) {
14             for(int i=1;i<=n;i++) anc[i]=i;
15         }
16         int Find(int x) {
17             return (x==anc[x])?x:(anc[x]=Find(anc[x]));
18         }
19         void Union(int x,int y) {
20             anc[Find(y)]=Find(x);
21         }
22 };
23 int main() {
24     int n,m;
25     scanf("%d%d",&n,&m);
26     Edge e[m];
27     for(int i=0;i<m;i++) scanf("%d%d%d",&e[i].a,&e[i].b,&e[i].w);
28     std::sort(&e[0],&e[m]);
29     UnionFindSet s(n);
30     int ans=0,area=n;
31     for(int i=0;i<m;i++) {
32         if(s.Find(e[i].a)==s.Find(e[i].b)) continue;
33         ans+=e[i].w;
34         s.Union(e[i].a,e[i].b);
35         area--;
36         if(area==1) {
37             printf("%d\n",ans);
38             return 0;
39         }
40     }
41     puts("orz");
42     return 0;
43 }

 

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

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

[洛谷3366]模板最小生成树

原创洛谷 LUOGU P3366 模板最小生成树

洛谷 P3366 模板最小生成树

3366 模板最小生成树(Kruskal)

普及组模板——最小生成树