#HK5265. 「NOISG 2024 Final」Coins

「NOISG 2024 Final」Coins

题目描述

译自 NOISG 2024 Final T4. Coins

本森有 nn 枚重量不同的硬币和一台称重天平。每次他将两枚硬币 xxyy 放在天平上,硬币之间的相对重量将被揭示,从而他知道 xxyy 中哪枚更重。

硬币 xx 的排名等于不比硬币 xx 重的硬币数量(包括其自身),因此最轻的硬币排名为 11,次轻的硬币排名为 22,依此类推,最重的硬币排名为 nn

若某枚硬币在现有称重结果下只有唯一可能的排名,则该硬币的排名被确定。

对于 nn 枚硬币,帮助本森确定每枚硬币的排名在哪次称重后被确定,或判断其排名永远无法被确定。

输入格式

程序需从标准输入读取数据。

输入的第一行包含两个空格分隔的整数 nnmm

接下来的 mm 行,每行包含两个整数 xxyy,表示硬币 xx 比硬币 yy 轻。

输出格式

程序需向标准输出输出结果。

输出 nn 个整数。如果硬币 ii 在所有 mm 次称重后排名未被确定,第 ii 个整数应为 1-1。否则,存在某个 kk,使得硬币 iikk 次称重后排名被确定,但在 k1k-1 次称重后排名未被确定。输出此 kk 值。

4 4
2 4
3 1
4 1
2 3

3 4 -1 -1

在前 33 次称重后,可以确定硬币 11 是最重的硬币,但在仅前 22 次称重时无法确定。因此,输出的第一个整数为 33

类似地,在 44 次称重后,可以确定硬币 22 是最轻的硬币,但在 33 次称重后无法确定。因此,输出的第二个整数为 4。

注意到硬币重量的两种排序 2,4,3,12,4,3,12,3,4,12,3,4,1 均符合所有称重结果。因此,硬币 33 的排名可能是 2233,均与所有称重一致,故硬币 33 的排名永远无法确定。类似地,硬币 44 的排名也永远无法确定。

如果你的输出为 1 1 -1 -1,你将获得该子任务 50%50\% 的分数。

这个样例满足子任务 1,2,3,41,2,3,4 的限制。

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

8 8 5 5 5 6

这个样例满足子任务 2,3,42,3,4 的限制。

数据范围与提示

对于所有子任务,保证:

  • 2n2000002 \leq n \leq 200000
  • 1m8000001 \leq m \leq 800000
  • 1x[i],y[i]n1 \leq x[i], y[i] \leq n,对于所有 1im1 \leq i \leq m
  • 存在一组重量使得硬币 x[i]x[i] 比硬币 y[i]y[i] 轻(对于所有 1im1 \leq i \leq m)。

详细子任务附加限制及分值如下表所示:

子任务 分值 附加限制
11 66 1n7,1m201 \leq n \leq 7, 1 \leq m \leq 20
22 1616 1n100,1m4001 \leq n \leq 100, 1 \leq m \leq 400
33 1010 1n1000,1m40001 \leq n \leq 1000, 1 \leq m \leq 4000
44 6868 无附加限制

对于每个子任务,如果你的程序正确判断每枚硬币在所有 mm 次称重后是否排名被确定,你将获得 50%50\% 的分数。

具体来说,如果输出 nn 个整数,满足:

  • 若第 ii 枚硬币在 mm 次称重后排名未被确定,第 ii 个整数为 1-1
  • 若第 ii 枚硬币在 mm 次称重后排名被确定,第 ii 个整数为 11mm 之间的任意整数,

则你将获得该子任务 50%50\% 的分数。