zoukankan      html  css  js  c++  java
  • 最小生成树&&最大生成树模板

    #include<bits/stdc++.h>
    using namespace std;
    int n,m;
    struct edge
    {
       int x;
       int y;
       int len;
    }edges[100005];
    bool up1(edge a,edge b)   
    {
       return a.len<b.len;
    }
    bool down1(edge a,edge b)   
    {
       return a.len>b.len;
    }
    int parent[100005];
    int ffind(int x)
    {
       if(x==parent[x]) return x;
       else return parent[x]=ffind(parent[x]);
    }
    void sset()
    {
        for(int i=1;i<=n;i++)
        {
            parent[i]=i;
        }
    }
    int kruskal()
    {
        sset(n);
        int ans=0;
        int num=0;
        for(int i=1;i<=m;i++)
        {
          int a1=ffind(edges[i].x);
          int a2=ffind(edges[i].y);
          if(a1!=a2)
          {
            ans=ans+edges[i].len;
            parent[a1]=a2;
            num++;
          }
        }
        if(num==n-1)   return ans;
        else return 0;
    }
    int main()
    {
          cin>>n>>m;
          for(int i=1;i<=m;i++)
          {
            cin>>edges[i].x>>edges[i].y>>edges[i].len;
          }
          sort(edges+1,edges+m+1,up1);
          int min1=kruskal();
          sort(edges+1,edges+m+1,down1);
          int max1=kruskal();
          if(min1) cout<<min1<<endl;
          if(max1) cout<<max1<<endl;
          return 0;
    }
  • 相关阅读:
    js函数调用模式
    js闭包和回调
    js原型
    oracle sql优化笔记
    shell脚本学习
    程序与资源管理
    vi/vim学习
    压缩和解压缩
    用户及用户组
    万用字符和特殊字符
  • 原文地址:https://www.cnblogs.com/Andromeda-Galaxy/p/9509224.html
Copyright © 2011-2022 走看看