QOJ.ac

QOJ

Limite de temps : 2.0 s Limite de mémoire : 512 MB Points totaux : 100 Hackable ✓

#16926. 简单的比较并设置

Statistiques

我们为全局变量 $v$ 定义“比较并交换”(Compare-and-Set)操作。该操作检查变量是否等于 $a$。如果相等,则将变量的值更改为 $b$ 且操作成功。否则,变量的值保持不变且操作失败。我们将该操作记为 $\text{CAS}(a, b)$。

假设给定了一个此类操作的列表 $\text{CAS}(a_1, b_1), \dots, \text{CAS}(a_n, b_n)$。此外,还给出了该变量的初始值 $c$,以及一个期望列表 $w_1, \dots, w_n$,其中 $w_i$ 表示你是否希望操作 $\text{CAS}(a_i, b_i)$ 成功。你的任务是确定一个操作的执行顺序,使得所有的期望都得到满足。

输入格式

第一行包含两个整数 $n$ 和 $c$($1 \le n \le 10^5$;$1 \le c \le 10^9$)—— 操作的数量和变量的初始值。

接下来的 $n$ 行,每行包含三个整数 $a_i, b_i, w_i$($1 \le a_i, b_i \le 10^9$;$0 \le w_i \le 1$),表示操作 $\text{CAS}(a_i, b_i)$。如果 $w_i = 1$,则你希望该操作成功;如果 $w_i = 0$,则你希望该操作失败。操作按输入顺序从 $1$ 到 $n$ 进行编号。

输出格式

如果不存在满足要求的操作顺序,输出单个单词 No

否则,输出单词 Yes,随后输出 $n$ 个互不相同的整数 $p_1, p_2, \dots, p_n$($1 \le p_i \le n$),表示操作 $p_1$ 应当最先执行,然后是操作 $p_2$,依此类推。如果存在多种可能的顺序,输出其中任意一种即可。

样例

输入样例 1

4 1
1 2 0
1 2 1
2 3 1
3 4 0

输出样例 1

Yes
4 2 1 3

输入样例 2

3 1
1 2 1
1 2 1
1 2 0

输出样例 2

No

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.