/ Vijos / 题库 /

身高推算

身高推算

时间限制:1秒  内存限制:256M


【问题描述】

  幼儿园的 \(n\) 小朋友站成一排,并从左到右被编号为 \(1..n\)。每个小朋友的身高为正整数,其中最高一个小朋友编号为 \(k\) 、身高为 \(h\)。注意,身高为H的小朋友可能不止 \(k\) 一个。

  现在告诉你 \(m\) 条信息,每条信息格式为 \(a\ b\):表示 \(a\) 号小朋友能看到 \(b\) 号小朋友,即 \(b\) 号小朋友的身高 不低于 \(a\) 号小朋友的身高,并且在 \(a\) 号和 \(b\) 号之间的小朋友的身高都 严格低于 \(a\) 号小朋友的身高。

  请你推算每个小朋友的最大可能的身高,我们保证给出的数据都是正确的,且一定有满足限制条件的解。

【输入格式】

  第 \(1\) 行包含四个用空格分开的整数:\(n, k, h\) 和 \(m\);
  第 \(2..m+1\) 行:每行包含两个用空格分开的整数 \(a\) 和 \(b\),表示小朋友 \(a\) 能看到小朋友 \(b\)。注意:\(1≤a,b≤N\),且有可能 \(a\) 比 \(b\) 大。

【输出格式】

  输出n行,第 \(i\) 行包含一个整数,表示第 \(i\) 号小朋友的最大身高。

【输入输出样例】

 Input

8 1 7 6
1 2
3 4
2 4
7 6
6 8
5 8

 Output

7
7
6
7
7
6
5
7

【样例解释】

  输入信息告诉我们,最高是1号,高为7。
  根据前三条信息,1能看见2,所以2的身高不比1矮,所以2最高为7。又因为2能看见4,所以4最高也为7,而3在2,4之间,所以3最高为6。
  再根据后三条信息,5也能看见8,所以8最高为7,5最高也为7,因为6、7在5和8之间,所以他们的身高最高为6,但7又在6和8之间,所以7比6矮,所以7最高为5,而6最高为6。

【数据说明】

  对于 \(100\%\) 的数据,\(1 ≤ n ≤ 10000\),\(1 ≤ h ≤ 1000\),\(0 ≤ m ≤ 10000\)

【来源】

  Mr.he

信息

ID
2872
难度
9
分类
图结构 | 拓扑排序组合数学 | 差分 点击显示
标签
递交数
2
已通过
1
通过率
50%
被复制
3
上传者