zoukankan      html  css  js  c++  java
  • uoj #298. 【CTSC2017】网络

    #298. 【CTSC2017】网络

    一个一般的网络系统可以被描述成一张无向连通图。图上的每个节点为一个服务器,连接服务器与服务器的数据线则看作图上的一条边,边权为该数据线的长度。两个服务器之间的通讯距离被定义为其对应节点之间最短路的长度。

    现在,考虑一个当前图结构为树的网络系统。你作为该网络系统的管理员,被要求在这个系统中新加入一条给定长度的数据线。数据线可以连在任意两个服务器上。

    你的任务是,求出在所有合法的方案中,通讯距离最远的两个服务器之间的最小距离。

    输入格式

    输入包含多组数据。对于每组数据,输入的第一行包含二个正整数 N,LN,L, 其中 NN表示服务器个数,LL 为新加入数据线的长度。

    接下来 n1n−1 行,第 ii 行有三个正整数 ai,bi,liai,bi,li,表示有一条长度为 lili 的数据线连接服务器 ai,biai,bi。服务器的编号为 1N1∼N。

    输入的末尾以两个 00 作为结束。

    输出格式

    对于每组数据,输出一行一个整数,描述在所有合法的方案中,通讯距离最远的两个服务器之间的最小距离。

    样例一

    input

    7 1
    1 2 1
    2 3 1
    3 4 1
    4 5 1
    5 6 1
    6 7 1
    0 0
    
    

    output

    3
    
    

    样例二

    input

    6 26
    1 2 66
    2 3 11
    3 4 73
    2 5 77
    3 6 33
    10 47
    1 2 86
    2 3 69
    3 4 41
    4 5 26
    5 6 41
    2 7 73
    3 8 77
    4 9 2
    5 10 65
    0 0
    
    

    output

    143
    232
    
    

    样例三

    见样例数据下载。

    限制与约定

    一共有 20 个测试点。编号为 1201∼20。每个测试点为 5 分。

    保证在任一测试点中,数据的组数不会超过 1515,且所有数据的 NN 之和不超过数据范围中标明的 NN 的最大值的 55 倍。

    保证所有的输入数据均为不超过 2311231−1 的非负整数,保证 N1N≥1。

    保证数据合法。

    对于给定的测试点,其限制条件如下表所示。

    测试点NN测试点NN
    1 10≤10 11 20000≤20000
    2 50≤50 12
    3 100≤100 13
    4 14
    5 150≤150 15
    6 600≤600 16 100000≤100000
    7 17
    8 18
    9 2000≤2000 19
    10 20

    时间限制:1s1s

    空间限制:512MB

    #include<iostream>
    #include<cstdio>
    #include<cstring>
    #define maxn 210
    using namespace std;
    int n;
    long long map[maxn][maxn],a[maxn][maxn],ans=1000000000000000;
    void init(){
        for(int i=1;i<=n;i++)
            for(int j=1;j<=n;j++)
                map[i][j]=a[i][j];
    }
    void floyed(){
        for(int k=1;k<=n;k++)
        for(int i=1;i<=n;i++)
        for(int j=1;j<=n;j++){
            if(i==j||j==k||i==k)continue;
            map[i][j]=min(map[i][j],map[i][k]+map[k][j]);
        }
    }
    long long count(){
        long long res=0;
        for(int i=1;i<=n;i++){
            for(int j=i+1;j<=n;j++)
            res=max(res,map[i][j]);
        }
        return res;
    }
    int main(){
        int l;
        while(1){
            scanf("%d%d",&n,&l);
            ans=1000000000000000;
            if(n==0&&l==0)return 0;
            int x,y,z;
            for(int i=1;i<=n;i++)
                for(int j=1;j<=n;j++)
                    if(i!=j)a[i][j]=10000000000000;
            for(int i=1;i<n;i++){
                scanf("%d%d%d",&x,&y,&z);
                a[x][y]=a[y][x]=z;
            }
            for(int i=1;i<=n;i++)
                for(int j=i+1;j<=n;j++){
                    init();
                    map[i][j]=min(map[i][j],1LL*l);
                    map[j][i]=min(map[j][i],1LL*l);
                    floyed();
                    ans=min(ans,count());
                }
            cout<<ans<<endl;
        }
        return 0;
    }
    10分 暴力
  • 相关阅读:
    Hanoi塔
    采药
    进制转换(大数)
    Load Balancing with NGINX 负载均衡算法
    upstream模块实现反向代理的功能
    epoll
    在nginx启动后,如果我们要操作nginx,要怎么做呢 别增加无谓的上下文切换 异步非阻塞的方式来处理请求 worker的个数为cpu的核数 红黑树
    粘性会话 session affinity sticky session requests from the same client to be passed to the same server in a group of servers
    负载均衡 4层协议 7层协议
    A Secure Cookie Protocol 安全cookie协议 配置服务器Cookie
  • 原文地址:https://www.cnblogs.com/thmyl/p/8998452.html
Copyright © 2011-2022 走看看