#HK5265. 「NOISG 2024 Final」Coins

「NOISG 2024 Final」Coins

题目描述

译自 NOISG 2024 Final T4. Coins

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

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

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

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

输入格式

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

输入的第一行包含两个空格分隔的整数 nn 和 mm。

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

输出格式

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

输出 nn 个整数。如果硬币 ii 在所有 mm 次称重后排名未被确定,第 ii 个整数应为 −1-1。否则,存在某个 kk,使得硬币 ii 在 kk 次称重后排名被确定,但在 k−1k-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,1 和 2,3,4,12,3,4,1 均符合所有称重结果。因此,硬币 33 的排名可能是 22 或 33,均与所有称重一致,故硬币 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 的限制。

数据范围与提示

对于所有子任务,保证:

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

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

子任务 分值 附加限制
11 66 1≤n≤7,1≤m≤201 \leq n \leq 7, 1 \leq m \leq 20
22 1616 1≤n≤100,1≤m≤4001 \leq n \leq 100, 1 \leq m \leq 400
33 1010 1≤n≤1000,1≤m≤40001 \leq n \leq 1000, 1 \leq m \leq 4000
44 6868 无附加限制

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

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

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

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