QOJ.ac

QOJ

حد الوقت: 1 s حد الذاكرة: 2048 MB مجموع النقاط: 100

#4225. 接触者追踪

الإحصائيات

一种新型传染病已开始在人群中传播。你的任务是找出可能被感染的人,以便让他们进行隔离。该疾病在人群中的传播规律如下:

  • 当一个人与感染者接触时,他们可能会(但不一定)感染该疾病。如果他们感染了该疾病,他们在当天剩余时间内不具有传染性,因此不会传染给当天接触的其他任何人。
  • 当一个人感染该疾病后,从感染后的第二天起具有传染性。
  • 从感染后的第三天起,他们会出现症状;因此,他们将进行自我隔离,此后不再与任何其他人接触。

已知在第 0 天,有一名“零号病人”(身份未知)感染了该疾病。在第 1 天,他们具有传染性,并可能与人接触,从而可能感染这些人。在第 2 天,零号病人出现症状,因此停止与他人接触,但任何在第 1 天被感染的人都可能将疾病传播给他们接触的人。

今天是第 $k$ 天,且已接近尾声。你可以获取每一天(包括今天)所有接触过的人的名单。如果你能识别出所有明天可能具有传染性但尚未出现症状的人(因为他们今天才感染),并通知他们隔离,你就可以阻止疫情爆发,因为所有明天出现症状的人无论如何都会自行隔离。为了确保能够阻止疫情爆发,你需要通知的最少隔离人数是多少?

输入格式

第一行包含三个整数 $n$ ($1 \le n \le 1,000$),$k$ ($1 \le k \le 10$) 和 $c$ ($0 \le c \le 1,000$),其中 $n$ 是人数,$k$ 是自零号病人感染以来的天数,$c$ 是人与人之间发生的接触次数。

接下来的 $c$ 行,每行包含三个空格分隔的整数 $a$,$b$ ($1 \le a < b \le n$) 和 $d$ ($1 \le d \le k$),表示人 $a$ 和 $b$ 在第 $d$ 天有过接触。这 $c$ 行数据各不相同。至少会有一个人在第 1 天之后没有任何接触。

输出格式

输出一行,包含一个整数 $x$,表示从第 $k+1$ 天开始你必须通知隔离的最少人数。然后,输出 $x$ 行,每行一个需要隔离的人的编号,按升序排列。

样例

样例输入 1

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

样例输出 1

2
2
3

说明 1

在样例 1 中,零号病人可能是 1 号或 4 号。2 号和 3 号可以排除,因为他们在第 2 天有过接触,而此时零号病人已经出现症状并被隔离了。

假设 1 号是零号病人。1 号可能在第 1 天感染了 4 号。1 号在第 2 天出现症状,因此开始隔离。因此,从 1 号(零号病人)到 2 号或 3 号没有接触链,所以 2 号和 3 号是安全的,不需要隔离。如果 1 号在第 1 天感染了 4 号,那么 4 号将在明天(第 3 天)出现症状,因此不需要联系他们,因为他们会自行隔离。因此,如果零号病人是 1 号,则无需通知任何人。

现在假设 4 号是零号病人。4 号可能在第 1 天感染了 1 号;使用与上述相同的逻辑,无需通知 1 号或 4 号在第 3 天隔离。这留下了 2 号和 3 号,这需要我们考虑多种感染模式。

如果 4 号在第 1 天同时感染了 2 号和 3 号,那么他们两人都会在第 3 天出现症状并自行隔离,因此我们不需要通知他们。

假设 4 号在第 1 天感染了 2 号但没有感染 3 号。(请记住,传播不是必然的。)在这种情况下,2 号可能会在第 2 天感染 3 号,而 3 号在第 3 天尚未出现症状,因此我们需要通知 3 号进行隔离。

同样,如果 4 号在第 1 天感染了 3 号但没有感染 2 号,我们需要通知 2 号进行隔离。

因此,为了确保我们能阻止疫情爆发,我们需要通知 2 号和 3 号进行隔离。这保证了无论 1 号还是 4 号是零号病人,疫情都能被阻止。

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.