CF1479C.Continuous City
省选/NOI-
通过率:0%
时间限制:2.00s
内存限制:512MB
AC君温馨提醒
该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。
题目描述
Some time ago Homer lived in a beautiful city. There were n blocks numbered from 1 to n and m directed roads between them. Each road had a positive length, and each road went from the block with the smaller index to the block with the larger index. For every two (different) blocks, there was at most one road between them.
Homer discovered that for some two numbers L and R the city was (L,R)-continuous.
The city is said to be (L,R)-continuous, if
- all paths from block 1 to block n are of length between L and R (inclusive); and
- for every L≤d≤R, there is exactly one path from block 1 to block n whose length is d.
A path from block u to block v is a sequence u=x0→x1→x2→⋯→xk=v, where there is a road from block xi−1 to block xi for every 1≤i≤k. The length of a path is the sum of lengths over all roads in the path. Two paths x0→x1→⋯→xk and y0→y1→⋯→yl are different, if k=l or xi=yi for some 0≤i≤mink,l.
After moving to another city, Homer only remembers the two special numbers L and R but forgets the numbers n and m of blocks and roads, respectively, and how blocks are connected by roads. However, he believes the number of blocks should be no larger than 32 (because the city was small).
As the best friend of Homer, please tell him whether it is possible to find a (L,R)-continuous city or not.
不久之前,荷马住在一座美丽的城市里。这座城市共有 n 个街区,编号从 1 到 n,以及 m 条有向道路连接这些街区。每条道路具有正的长度,且所有道路均从编号较小的街区指向编号较大的街区。任意两个(不同的)街区之间至多只有一条道路。
荷马发现,对某两个数 L 和 R,该城市是 (L,R)-连续的。
若一个城市满足以下两个条件,则称其为 (L,R)-连续的:
- 所有从街区 1 到街区 n 的路径长度均在区间 [L,R] 内(含端点);
- 对每个满足 L≤d≤R 的整数 d,恰好存在一条从街区 1 到街区 n 的路径,其长度为 d。
从街区 u 到街区 v 的一条路径定义为一个序列 u=x0→x1→x2→⋯→xk=v,其中对每个 1≤i≤k,均存在一条从街区 xi−1 指向街区 xi 的道路。一条路径的长度定义为该路径中所有道路长度之和。两条路径 x0→x1→⋯→xk 和 y0→y1→⋯→yl 被视为不同,当且仅当 k=l,或存在某个 0≤i≤min{k,l} 使得 xi=yi。
搬家到另一座城市后,荷马只记得这两个特殊数值 L 和 R,却忘记了街区数量 n、道路数量 m,以及街区之间的具体连接方式。不过,他确信街区总数不会超过 32(因为那座城市很小)。
作为荷马最好的朋友,请你告诉他:是否存在一个 (L,R)-连续的城市?
输入格式
The single line contains two integers L and R (1≤L≤R≤106).
单行包含两个整数 L 和 R(1≤L≤R≤106)。
输出格式
If it is impossible to find a (L,R)-continuous city within 32 blocks, print "NO" in a single line.
Otherwise, print "YES" in the first line followed by a description of a (L,R)-continuous city.
The second line should contain two integers n (2≤n≤32) and m (1≤m≤2n(n−1)), where n denotes the number of blocks and m denotes the number of roads.
Then m lines follow. The i-th of the m lines should contain three integers ai, bi (1≤ai<bi≤n) and ci (1≤ci≤106) indicating that there is a directed road from block ai to block bi of length ci.
It is required that for every two blocks, there should be no more than 1 road connecting them. That is, for every 1≤i<j≤m, either ai=aj or bi=bj.
如果无法在最多 32 个街区范围内构造出一个 (L,R)-连续城市,则在一行中输出 "NO"。
否则,在第一行输出 "YES",随后描述一个 (L,R)-连续城市。
第二行应包含两个整数 n(2≤n≤32)和 m(1≤m≤2n(n−1)),其中 n 表示街区数量,m 表示道路数量。
接下来是 m 行。第 i 行应包含三个整数 ai、bi(1≤ai<bi≤n)和 ci(1≤ci≤106),表示存在一条从街区 ai 指向街区 bi 的有向道路,其长度为 ci。
要求:任意两个街区之间至多只有一条道路相连。即,对任意 1≤i<j≤m,均有 ai=aj 或 bi=bj。
输入输出样例
输入#1
1 1
输出#1
YES 2 1 1 2 1
输入#2
4 6
输出#2
YES 5 6 1 2 3 1 3 4 1 4 5 2 5 1 3 5 1 4 5 1
说明/提示
In the first example there is only one path from block 1 to block n=2, and its length is 1.
In the second example there are three paths from block 1 to block n=5, which are 1→2→5 of length 4, 1→3→5 of length 5 and 1→4→5 of length 6.
在第一个例子中,从方块 1 到方块 n=2 只有一条路径,其长度为 1。
在第二个例子中,从方块 1 到方块 n=5 共有三条路径,分别为:长度为 4 的路径 1→2→5、长度为 5 的路径 1→3→5,以及长度为 6 的路径 1→4→5。
输入解题思路,AI测评打分。不知道怎么写?