QOJ.ac

QOJ

時間限制: 3 s 記憶體限制: 1024 MB 總分: 100

#8593. 硬币

统计

Benson 有 $n$ 枚重量各不相同的硬币,以及一个天平。每当他将两枚硬币 $x$ 和 $y$ 放在天平上时,它们之间的相对重量就会显现出来,从而使他知道 $x$ 和 $y$ 哪一枚更重。

硬币 $x$ 的排名等于重量不大于硬币 $x$ 的硬币数量(包括其自身),因此最轻的硬币排名为 1,次轻的硬币排名为 2,以此类推,最重的硬币排名为 $n$。

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

对于每一枚硬币,请帮助 Benson 确定使其排名变得确定的第一次称重,或者判定该硬币的排名永远无法确定。

输入格式

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

第一行包含两个空格分隔的整数 $n$ 和 $m$。

接下来的 $m$ 行,每行包含两个整数 $x$ 和 $y$,表示硬币 $x$ 比硬币 $y$ 轻。

输出格式

输出 $n$ 个整数。如果硬币 $i$ 在所有 $m$ 次测量后排名仍不确定,则第 $i$ 个整数应为 $-1$。否则,存在某个 $k$,使得硬币 $i$ 在经过 $k$ 次称重后排名确定,但在经过 $k-1$ 次称重后排名不确定。输出这个 $k$ 的值。

子任务

对于所有子任务,保证:

  • $2 \le n \le 200\,000$
  • $1 \le m \le 800\,000$
  • 对于所有 $1 \le i \le m$,满足 $1 \le x[i], y[i] \le n$
  • 存在一组重量分配方案,使得对于所有 $1 \le i \le m$,硬币 $x[i]$ 均比硬币 $y[i]$ 轻。

你的程序将在满足以下限制的输入实例上进行测试:

子任务 分值 附加限制
0 0 样例测试点
1 6 $1 \le n \le 7, 1 \le m \le 20$
2 16 $1 \le n \le 100, 1 \le m \le 400$
3 10 $1 \le n \le 1000, 1 \le m \le 4000$
4 68 无附加限制

对于每个子任务,如果你的程序能正确判定每枚硬币在 $m$ 次称重结束时是否确定,你将获得该子任务 50% 的分数。

具体而言,如果你输出 $n$ 个整数,使得:

  • 如果第 $i$ 枚硬币的排名在 $m$ 次测量结束时未确定,则第 $i$ 个整数为 $-1$
  • 如果第 $i$ 枚硬币的排名在 $m$ 次测量结束时已确定,则第 $i$ 个整数为 $1$ 到 $m$ 之间的任意整数

那么你将获得该子任务 50% 的分数。

样例

样例输入 1

4 4
2 4
3 1
4 1
2 3

样例输出 1

3 4 -1 -1

说明 1

我们在前 3 次测量后可以确定硬币 1 是最重的,但仅看前 2 次测量无法做到这一点。因此,正确输出中的第一个整数是 3。

同样,我们可以在 4 次测量后确定硬币 2 是最轻的,但在 3 次测量后无法确定。因此,正确输出中的第二个整数是 4。

观察到排序 2,4,3,1 和 2,3,4,1 都是硬币重量的有效排序。因此,硬币 3 的排名可能是 2 或 3,两者都与所有称重结果一致,因此硬币 3 的排名永远无法确定。同样,硬币 4 的排名也永远无法确定。

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

样例输入 2

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

样例输出 2

8 8 5 5 5 6

Discussions

About Discussions

The discussion section is only for posting: General Discussions (problem-solving strategies, alternative approaches), and Off-topic conversations.

This is NOT for reporting issues! If you want to report bugs or errors, please use the Issues section below.

Open Discussions 0
No discussions in this category.

Issues

About Issues

If you find any issues with the problem (statement, scoring, time/memory limits, test cases, etc.), you may submit an issue here. A problem moderator will review your issue.

Guidelines:

  1. This is not a place to publish discussions, editorials, or requests to debug your code. Issues are only visible to you and problem moderators.
  2. Do not submit duplicated issues.
  3. Issues must be filed in English or Chinese only.
Active Issues 0
No issues in this category.
Closed/Resolved Issues 0
No issues in this category.