#298. 【CTSC2017】网络

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

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

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

输入格式

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

接下来 n−1n−1 行,第 ii 行有三个正整数 ai,bi,liai,bi,li,表示有一条长度为 lili 的数据线连接服务器 ai,biai,bi。服务器的编号为 1∼N1∼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 个测试点。编号为 1∼201∼20。每个测试点为 5 分。

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

保证所有的输入数据均为不超过 231−1231−1 的非负整数,保证 N≥1N≥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=;
void init(){
for(int i=;i<=n;i++)
for(int j=;j<=n;j++)
map[i][j]=a[i][j];
}
void floyed(){
for(int k=;k<=n;k++)
for(int i=;i<=n;i++)
for(int j=;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=;
for(int i=;i<=n;i++){
for(int j=i+;j<=n;j++)
res=max(res,map[i][j]);
}
return res;
}
int main(){
int l;
while(){
scanf("%d%d",&n,&l);
ans=;
if(n==&&l==)return ;
int x,y,z;
for(int i=;i<=n;i++)
for(int j=;j<=n;j++)
if(i!=j)a[i][j]=;
for(int i=;i<n;i++){
scanf("%d%d%d",&x,&y,&z);
a[x][y]=a[y][x]=z;
}
for(int i=;i<=n;i++)
for(int j=i+;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 ;
}

10分 暴力

uoj #298. 【CTSC2017】网络的更多相关文章

  1. [CTSC2017]网络

    [CTSC2017]网络 连一条长度为len的边,使得基环树的直径最小 结论:一定连在某条直径两个点上(否则更靠近不劣) 然后二分答案判定. dp[i]:链上一个点往下延伸的最大深度 考虑对于任意两个 ...

  2. uoj 300 [CTSC2017]吉夫特 - Lucas - 分块 - 动态规划

    题目传送门 戳此处转移 题目大意 给定一个长为$n$的序列,问它有多少个长度大于等于2的子序列$b_{1}, b_{2}, \cdots, b_{k}$满足$\prod_{i = 2}^{k}C_{b ...

  3. BZOJ 4901 [CTSC2017]网络

    题解: 只会O(n log^2 n) O(n log n)先留坑 不开long long 0 分!!!! #include<iostream> #include<cstdio> ...

  4. uoj #297. 【CTSC2017】密钥

    #297. [CTSC2017]密钥 一个密钥是一个长度为 n=2k+1n=2k+1 的字符串,它包含 11 个字母X.kk 个字母 A 和 kk 个字母 B.例如 k=3k=3 时,BAXABAB ...

  5. uoj#300.【CTSC2017】吉夫特

    题面:http://uoj.ac/problem/300 一道大水题,然而我并不知道$lucas$定理的推论.. $\binom{n}{m}$为奇数的充要条件是$n&m=n$.那么我们对于每个 ...

  6. 【loj2262】【CTSC2017】网络

    题目 一颗\(n\)个点的树,求加入一条边点之后两点间最长距离的最小值 : \(n \le 100000\) ; 题解 首先加入边的两个端点一定在直径上面,先\(dfs\)拎出直径来讨论(下标只代表直 ...

  7. UOJ#299. 【CTSC2017】游戏 线段树 概率期望 矩阵

    原文链接www.cnblogs.com/zhouzhendong/p/UOJ299.html 前言 不会概率题的菜鸡博主做了一道概率题. 写完发现运行效率榜上的人都没有用心卡常数——矩阵怎么可以用数组 ...

  8. 虚拟机上装uoj

    前期准备: x64 ubuntu 镜像.vmware.ss账号 注意一定要有64位镜像! ss不是必须的,不过没有的话就等着下载一晚上吧... 首先先装好ubuntu,我装的是ubuntu-16.04 ...

  9. android 网络加载图片,对图片资源进行优化,并且实现内存双缓存 + 磁盘缓存

    经常会用到 网络文件 比如查看大图片数据 资源优化的问题,当然用开源的项目  Android-Universal-Image-Loader  或者 ignition 都是个很好的选择. 在这里把原来 ...

随机推荐

  1. generate_scripts

    echo "#!/usr/bin/env python" >$1echo "#-*- encoding=UTF-8 -*-" >>$1echo ...

  2. Maven Assembly打包提示[WARNING] transitive dependencies if any will not be available

    maven assembly打包出现错误 [WARNING] The POM for com.flink.xxr:0.0.1-SNAPSHOT is invalid, transitive depen ...

  3. 请求时控制器的返回结果view()怎么会默认调到某个页面的?

    请求时控制器的返回结果view()怎么会默认调到某个页面的? (1)请求时会拿方法行为的名字去和视图的名字对应,会默认去views视图下的与控制器名称一样的文件夹下名字与方法对应的视图文件匹配对应,然 ...

  4. 最长上升子序列(LIS)

    最长递增子序列,Longest Increasing Subsequence 下面我们简记为 LIS.排序+LCS算法 以及 DP算法就忽略了,这两个太容易理解了. 假设存在一个序列d[1..9] = ...

  5. Jar中的Java程序如何读取Jar包中的资源文件

    Jar中的Java程序如何读取Jar包中的资源文件 比如项目的组织结构如下(以idea中的项目为例): |-ProjectName |-.idea/  //这个目录是idea中项目的属性文件夹 |-s ...

  6. 安装sshpass:No package sshpass available

    安装sshpass的时候,报了如下错误: No Package sshpass available 更改软件源之后也无效.直到看到StackOverFlow上的一个问题:https://stackov ...

  7. Gym - 101128C:Canvas Painting

    这个就是哈夫曼树哇~ 我们仨英语太差了,跟榜时候才看出来是哈夫曼树雾 一个优先队列就可以搞定 #include <cstdio> #include <algorithm> #i ...

  8. ArcGIS JS API实现的距离测量与面积量算

    转自https://www.cnblogs.com/deliciousExtra/p/5490937.html

  9. Android selector中的item的顺序

    在selector中,要将默认状态的item放在最后面,因为一旦前面的item满足匹配条件,后面的item就不会去匹配.因此,把默认状态的item放在前面的话,后面的item没有执行的机会

  10. mysql 主键

    什么是主键 表中的每一行都应该具有可以唯一标识自己的一列(或一组列).而这个承担标识作用的列称为主键. 任何列都可以作为主键,只要它满足以下条件: • 任何两行都不具有相同的主键值.就是说这列的值都是 ...