zoukankan      html  css  js  c++  java
  • 【日常训练】数据中心(CSP 201812-4)

    分析

    题目实际上是在要在给定的边上构建出一个树,使得这个树的最长边尽可能小。
    这实际上是最小生成树的性质(反证法)。问题从而得到解决。

    代码

    /*
     * Code name => csp201812-5.cc
     * Written by Sam X
     * Date: 三月, 12, 2019
     * Time: 10:13
     */
    #include <bits/stdc++.h>
    #define fi first
    #define se second
    #define MP make_pair
    #define MS(x,y) memset(x, y, sizeof(x))
    #define ZERO(x) memset(x, 0, sizeof(x))
    #define rep(i,a,b)	for(repType i=static_cast<repType>(a); 
                            i<=static_cast<repType>(b);++i)
    #define per(i,a,b)	for(repType i=static_cast<repType>(a); 
                            i>=static_cast<repType>(b);--i)
    #define ALL(x) x.begin(), x.end()
    
    using repType=int;
    using ll=long long;
    using ld=long double;
    using namespace std;
    
    struct Edge
    {
        int u,v,w;
        Edge(int _u, int _v, int _w): u(_u), v(_v), w(_w) {} 
        bool operator < (const Edge& rhs) const
        {
            if(w!=rhs.w) return w<rhs.w;
            else return u<rhs.u;
        }
    };
    
    const int MAXN=50005;
    int fa[MAXN]; 
    int fd(int x) { return fa[x]==x?x:fa[x]=fd(fa[x]); }
    void ue(int x, int y) { int fx=fd(x), fy=fd(y); if(fx!=fy) fa[fx]=fy; }
    signed main()
    {
    #ifdef DEBUG
        freopen("input.txt", "r", stdin);
        freopen("output.txt", "w", stdout);
    #endif
        vector<Edge> edges;
        int n, m, root; cin>>n>>m>>root;
        iota(fa+1, fa+n+1, 1);
        rep(i, 1, m)
        {
            int u,v,w; cin>>u>>v>>w;
            edges.push_back(Edge(u,v,w));
        }
        sort(ALL(edges));
        int ans=0;
        rep(i,0,edges.size()-1)
        {
            if(fd(edges[i].u)!=fd(edges[i].v))
            {
                ans=max(ans, edges[i].w);
                ue(edges[i].u, edges[i].v);
            }
        }
        cout<<ans<<endl;
        return 0;
    }
    
  • 相关阅读:
    使用Eclipse 创建Spring Boot项目
    springMVC中文乱码问题
    Java POI Excel 导入导出
    springMVC + quartz实现定时器(任务调度器)
    spring配置Converter、Formatter日期转换器
    springMVC+springJDBC+Msql注解模式
    基于JavaScript封装的Ajax工具类
    H5音乐播放器
    JavaWeb+MySql分页封装
    JS如何判断是否为ie浏览器的方法(包括IE10、IE11在内)
  • 原文地址:https://www.cnblogs.com/samhx/p/csp-201812-4.html
Copyright © 2011-2022 走看看