zoukankan      html  css  js  c++  java
  • POJ 1861 Network

    题目链接:

    http://poj.org/problem?id=1861

    题目大意:

    Andrew计划搭建一个网络,有n个集线器且每个集线器必须能通过网线连接其他集线器,现有不同长度网线供选择且网线越短越便宜,要求Andrew所设计的方案必须确保最长的一个网线是所有方案中最小的。

    题目思路:

    其实就是求这个图的最小生成树的最大边,然后将加入到生成树中的每条边都输出出来。

    注:题目的样例数据是错的。

    #include <iostream>
    #include <cstdlib>
    #include <cstdio>
    #include <algorithm>
    #include <vector>
    #include <queue>
    using namespace std;
    #define INF 0xfffffff
    #define maxn 15005
    
    struct Edge
    {
        int  s, e, w;
        Edge(int s=0,int e=0,int w=0):s(s), e(e), w(w) {}
        bool friend operator < (Edge A, Edge B)
        {
            return A.w < B.w;
        }
    }P[maxn];
    
    int m, n, Par[maxn];
    int GetPar(int a);
    void Init();
    void Meger(int a,int b);
    void Kruskal();
    
    int main()
    {
        while(cin >> n >> m)
        {
            Init();
    
            for(int i=0; i<m; i++)
            {
                int s, e, w;
                cin >> s >> e >>w;
                P[i] = Edge(s,e,w);
            }
            sort(P, P+m);
            Kruskal();
        }
    }
    
    int GetPar(int a)
    {
        if(Par[a] != a)
            return Par[a] = GetPar(Par[a]);
        return a;
    }
    
    void Init()
    {
        for(int i=0; i<=n; i++)
            Par[i] = i;
    }
    
    void Meger(int a,int b)
    {
        Par[GetPar(a)] = GetPar(b);
    }
    
    void Kruskal()
    {
        Edge Ans[1005];
        int k = 0;
        for(int i=0; i<m; i++)
        {
            if(GetPar(P[i].s) != GetPar(P[i].e) )
            {
                Meger(P[i].s, P[i].e);
                Ans[k++] = P[i];
            }
        }
    
        cout << Ans[k-1].w << endl;
        cout << n-1 << endl;
    
        for(int i=0; i<k; i++)
        {
            cout << Ans[i].s <<" " << Ans[i].e << endl;
        }
    
    }
  • 相关阅读:
    Silverlight实例教程
    Silverlight实例教程
    Delphi:ADOConnection连接SQLServer自动断网问题解决
    用delphi写多屏幕程序
    GitHub中watch、star、fork的作用
    JFinal Weixin 1.6发布【转】
    JFinal2.0极速开发视频教程发布【转】
    Android之Http通信——1.初识Http协议
    UVa 10986
    重写MPAndroidChart显示标记
  • 原文地址:https://www.cnblogs.com/chenchengxun/p/4224171.html
Copyright © 2011-2022 走看看