uoj #298. 【CTSC2017】网络
#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】网络的更多相关文章
- [CTSC2017]网络
[CTSC2017]网络 连一条长度为len的边,使得基环树的直径最小 结论:一定连在某条直径两个点上(否则更靠近不劣) 然后二分答案判定. dp[i]:链上一个点往下延伸的最大深度 考虑对于任意两个 ...
- uoj 300 [CTSC2017]吉夫特 - Lucas - 分块 - 动态规划
题目传送门 戳此处转移 题目大意 给定一个长为$n$的序列,问它有多少个长度大于等于2的子序列$b_{1}, b_{2}, \cdots, b_{k}$满足$\prod_{i = 2}^{k}C_{b ...
- BZOJ 4901 [CTSC2017]网络
题解: 只会O(n log^2 n) O(n log n)先留坑 不开long long 0 分!!!! #include<iostream> #include<cstdio> ...
- uoj #297. 【CTSC2017】密钥
#297. [CTSC2017]密钥 一个密钥是一个长度为 n=2k+1n=2k+1 的字符串,它包含 11 个字母X.kk 个字母 A 和 kk 个字母 B.例如 k=3k=3 时,BAXABAB ...
- uoj#300.【CTSC2017】吉夫特
题面:http://uoj.ac/problem/300 一道大水题,然而我并不知道$lucas$定理的推论.. $\binom{n}{m}$为奇数的充要条件是$n&m=n$.那么我们对于每个 ...
- 【loj2262】【CTSC2017】网络
题目 一颗\(n\)个点的树,求加入一条边点之后两点间最长距离的最小值 : \(n \le 100000\) ; 题解 首先加入边的两个端点一定在直径上面,先\(dfs\)拎出直径来讨论(下标只代表直 ...
- UOJ#299. 【CTSC2017】游戏 线段树 概率期望 矩阵
原文链接www.cnblogs.com/zhouzhendong/p/UOJ299.html 前言 不会概率题的菜鸡博主做了一道概率题. 写完发现运行效率榜上的人都没有用心卡常数——矩阵怎么可以用数组 ...
- 虚拟机上装uoj
前期准备: x64 ubuntu 镜像.vmware.ss账号 注意一定要有64位镜像! ss不是必须的,不过没有的话就等着下载一晚上吧... 首先先装好ubuntu,我装的是ubuntu-16.04 ...
- android 网络加载图片,对图片资源进行优化,并且实现内存双缓存 + 磁盘缓存
经常会用到 网络文件 比如查看大图片数据 资源优化的问题,当然用开源的项目 Android-Universal-Image-Loader 或者 ignition 都是个很好的选择. 在这里把原来 ...
随机推荐
- FB联网无人机取得重大进展 实现首次成功着陆
科技讯6月30日消息,据Engadget报道,在过去的几年里,世界最大社交网络Facebook始终在测试其太阳能无人飞机Aquila.2016年6月份,这种联网无人机在美国亚利桑那州的尤马进行了首次全 ...
- Java之匿名内部类和包装类
匿名内部类 作用: 假如某个类只使用一次,则可以使用匿名内部类,无需再新建该类 我们上下代码: package com.learn.chap03.sec16; /** * 定义接口 */ public ...
- 委托小结及Func用法
首先,委托是一种类型,由关键字delegate声明.确切的说,委托是一种可用于封装命名或者匿名方法的引用类型. 它类似于 C++ 中的函数指针,而且是类型安全和可靠的. 委托类型的声明与 ...
- SEO网站title应该怎么写
第一:具有独特性 在你的网站中,也许有成千上万的页面,首页-分类-无数的文章页面,这些都有固定的标题,他们的标题最好不要相同.有的时候也许不是`站长们故意的,但是在使用编辑软件的时候,经常 会出现很多 ...
- leetcode821
vector<int> shortestToChar(string S, char C) { vector<int> V; ; int AYC[N]; ; ; i < S ...
- leetcode872
class Solution { public: vector<int> v1; vector<int> v2; void GetLeaf(TreeNode* tree, in ...
- delphi 天气预报
天气预报 var astream : tmemorystream; sStream : TStringStream; jv : TJSONValue; begin astream := tmemory ...
- Mycat实战之离散分片
1 枚举分片(customer表) #### 1.1 修改配置信息加载配置文件 datanode hash-int vi partition-hash-int.txt db1=0 db2=1 [roo ...
- Pascal三角形
Pascal算法呢,很简单,因为有了推导公式nCr,而当我们刚刚接触一个事物时,面对要解决的问题,归纳分析得到规律,再通过编程,控制流程,对象,语言,方法,属性得到我们想要的结果.如果这次不是PAsc ...
- Shell脚本语法---在Makefile等文件…
1. Shell脚本语法 1.1. 条件测试:test [ 命令test或[可以测试一个条件是否成立,如果测试结果为真,则该命令的Exit Status为0,如果测试结果为假,则命令的Exit Sta ...