CF1479C Continuous City
题目描述
很久以前,Homer 住在一座美丽的城市里。城市中有 $n$ 个街区,编号从 $1$ 到 $n$,并且有 $m$ 条有向道路连接这些街区。每条道路都有一个正整数长度,并且每条道路都从编号较小的街区通向编号较大的街区。对于任意两个不同的街区,至多只有一条道路连接它们。
Homer 发现,对于某两个数 $L$ 和 $R$,这座城市是 $(L, R)$-连续的。
如果满足以下条件,则称这座城市是 $(L, R)$-连续的:
1. 所有从街区 $1$ 到街区 $n$ 的路径长度都在 $L$ 到 $R$(包含端点)之间;
2. 对于每一个 $L \leq d \leq R$,恰好有一条从街区 $1$ 到街区 $n$ 的路径,其长度为 $d$。
从街区 $u$ 到街区 $v$ 的一条路径是指一个序列 $u = x_0 \to x_1 \to x_2 \to \dots \to x_k = v$,其中对于每个 $1 \leq i \leq k$,存在一条从街区 $x_{i-1}$ 到街区 $x_i$ 的道路。路径的长度为该路径上所有道路长度之和。两条路径 $x_0 \to x_1 \to \dots \to x_k$ 和 $y_0 \to y_1 \to \dots \to y_l$ 被认为是不同的,当且仅当 $k \neq l$ 或者存在某个 $0 \leq i \leq \min\{k, l\}$ 使得 $x_i \neq y_i$。
搬到另一座城市后,Homer 只记得这两个特殊的数 $L$ 和 $R$,却忘记了街区数 $n$ 和道路数 $m$,也忘记了街区之间的连接方式。但他确信街区数不超过 $32$(因为那座城市很小)。
作为 Homer 最好的朋友,请你帮他判断是否存在一座 $(L, R)$-连续的城市。
输入格式
一行包含两个整数 $L$ 和 $R$($1 \leq L \leq R \leq 10^6$)。
输出格式
如果不存在不超过 $32$ 个街区的 $(L, R)$-连续城市,输出一行 "NO"。
否则,第一行输出 "YES",接下来描述一座 $(L, R)$-连续城市。
第二行输出两个整数 $n$($2 \leq n \leq 32$)和 $m$($1 \leq m \leq \frac{n(n-1)}{2}$),分别表示街区数和道路数。
接下来 $m$ 行,每行三个整数 $a_i$、$b_i$($1 \leq a_i < b_i \leq n$)和 $c_i$($1 \leq c_i \leq 10^6$),表示有一条从街区 $a_i$ 到街区 $b_i$ 的有向道路,长度为 $c_i$。
要求任意两个街区之间至多只有一条道路。即对于任意 $1 \leq i < j \leq m$,要么 $a_i \neq a_j$,要么 $b_i \neq b_j$。
说明/提示
在第一个样例中,只有一条从街区 $1$ 到街区 $n=2$ 的路径,其长度为 $1$。
在第二个样例中,从街区 $1$ 到街区 $n=5$ 有三条路径,分别为 $1 \to 2 \to 5$,长度为 $4$,$1 \to 3 \to 5$,长度为 $5$,以及 $1 \to 4 \to 5$,长度为 $6$。
由 ChatGPT 4.1 翻译