zoukankan      html  css  js  c++  java
  • [LUOGU] P2330 [SCOI2005]繁忙的都市

    题目描述
    
    城市C是一个非常繁忙的大都市,城市中的道路十分的拥挤,于是市长决定对其中的道路进行改造。城市C的道路是这样分布的:城市中有n个交叉路口,有些交叉路口之间有道路相连,两个交叉路口之间最多有一条道路相连接。这些道路是双向的,且把所有的交叉路口直接或间接的连接起来了。每条道路都有一个分值,分值越小表示这个道路越繁忙,越需要进行改造。但是市政府的资金有限,市长希望进行改造的道路越少越好,于是他提出下面的要求:
    
    1.改造的那些道路能够把所有的交叉路口直接或间接的连通起来。
    
    2.在满足要求1的情况下,改造的道路尽量少。
    
    3.在满足要求12的情况下,改造的那些道路中分值最大的道路分值尽量小。
    
    任务:作为市规划局的你,应当作出最佳的决策,选择那些道路应当被修建。
    
    输入输出格式
    
    输入格式:
    第一行有两个整数n,m表示城市有n个交叉路口,m条道路。接下来m行是对每条道路的描述,u, v, c表示交叉路口u和v之间有道路相连,分值为c。(1≤n≤3001≤c≤100001≤m≤50000)
    
    输出格式:
    两个整数s, max,表示你选出了几条道路,分值最大的那条道路的分值是多少。
    
    输入输出样例
    
    输入样例#1: 复制
    4 5
    1 2 3
    1 4 5
    2 4 7
    2 3 6
    3 4 8
    输出样例#1: 复制
    3 6

    题意有点绕,交叉点其实就是节点,所以所有点之和最小就是最小生成树,边数一定是n-1条,只需要找出最长的一条边就可以了。

    //Writer:GhostCai && His Yellow Duck
    
    #include<iostream>
    #include<algorithm>
    #define MAXN 200000
    using namespace std;
    
    int m,n,ans;
    
    int fa[MAXN];
    int fnd(int x){
        if(fa[x]==x) return x;
        return fa[x]=fnd(fa[x]);
    }
    void cat(int x,int y){
        x=fnd(x);y=fnd(y);
        if(x!=y) fa[y]=x;
    }
    
    struct Edge{
        int x,y,w;
    }e[MAXN]; 
    int ecnt;
    inline void add(int x,int y,int w){
        e[++ecnt].y = y;
        e[ecnt].x = x;
        e[ecnt].w = w;
    }
    bool cmp(const Edge x,const Edge y){
        return x.w < y.w ;
    }
    
    
    int main(){
        cin>>n>>m;
        int x,y,w;
        for(int i=1;i<=n;i++) fa[i]=i;
        for(int i=1;i<=m;i++){
            cin>>x>>y>>w;
            add(x,y,w);
        }
        sort(e+1,e+1+ecnt,cmp);
        int t=0;
        for(int i=1;i<=m;i++){
            int v=e[i].y ,u=e[i].x ;
            v=fnd(v);u=fnd(u);
            if(v!=u){
                cat(u,v);
                ans=max(e[i].w,ans);
                ++t;
            }
            if(t==n-1) break;
        }
        cout<<n-1<<" "<<ans<<endl;
        return 0;
    }
    

    本文来自博客园,作者:GhostCai,转载请注明原文链接:https://www.cnblogs.com/ghostcai/p/9247505.html

  • 相关阅读:
    EXT今日笔记自定义vtype
    游标的原理
    调用Excle组件导出,解决权限问题
    解决EntityFramework数据库无法自动迁移解决方法
    初涉AJAX
    20151015_系统分析阶段分析类的三种类型
    20151007_手动刷新Android系统SD卡
    20151014_基于距离的分类算法之KNN
    20151008_Android Application类
    20150919_获取Android唯一标识码
  • 原文地址:https://www.cnblogs.com/ghostcai/p/9247505.html
Copyright © 2011-2022 走看看