QOJ.ac

QOJ

시간 제한: 1 s 메모리 제한: 1024 MB 총점: 100 해킹 가능 ✓

#18704. Enquête épidémiologique

통계

En 2020, une nouvelle maladie infectieuse s'est propagée, et le Centre de contrôle des maladies de l'UCPC mène une enquête épidémiologique. La population de l'UCPC est composée de $N$ personnes, chacune possédant un numéro d'identification unique allant de $1, 2, \dots, N$.

Le Centre de contrôle des maladies a identifié qu'il y a eu $M$ réunions jusqu'à présent. Chaque réunion a impliqué $k$ personnes, et les personnes ayant les numéros d'identification $a_1, a_2, \dots, a_k$ ont participé à cette réunion.

Comme la maladie ne se transmet que dans des espaces clos et confinés, elle ne se propage qu'au sein des réunions. Les règles de propagation de la maladie sont les suivantes :

  • Si au moins une personne participant à une réunion est déjà infectée, toutes les personnes présentes à cette réunion deviennent infectées.
  • Si aucune personne participant à une réunion n'est infectée, rien ne se passe.

À partir des données recueillies, le Centre de contrôle des maladies souhaite prédire qui étaient les personnes initialement infectées. Étant donné les informations sur les réunions et l'état d'infection des personnes après la fin des $M$ réunions, écrivez un programme pour retracer les personnes qui étaient infectées avant la première réunion. On suppose qu'il n'existe aucun autre moyen de transmission ou de guérison de la maladie en dehors des règles mentionnées ci-dessus.

Entrée

La première ligne contient le nombre de personnes $N$ et le nombre de réunions $M$ ($2 \le N \le 100\,000$, $1 \le M \le 100\,000$).

À partir de la deuxième ligne, les informations sur les $M$ réunions sont données dans l'ordre chronologique. Chaque ligne contient le nombre de participants $k$ ($2 \le k \le N$) suivi des numéros d'identification $a_i$ des personnes ayant participé à la réunion ($1 \le a_i \le N$, $a_i \neq a_j$). Aucune réunion ne se déroule simultanément.

La dernière ligne contient les informations sur l'état d'infection des $N$ personnes. Si la personne portant le numéro d'identification $i$ est infectée après la dernière réunion, la valeur donnée est $1$, sinon elle est $0$. Notez qu'il est possible qu'aucune personne ne soit infectée.

La somme des $k$ ne dépasse pas $1\,000\,000$.

Sortie

Si les personnes infectées avant les réunions ne peuvent pas être retracées, affichez NO.

Sinon, affichez YES sur la première ligne, et sur la deuxième ligne, affichez $N$ entiers séparés par des espaces représentant l'état d'infection initial. Le $i$-ième nombre doit être $1$ si la personne portant le numéro d'identification $i$ était infectée avant le début de la première réunion, et $0$ sinon. S'il existe plusieurs états d'infection possibles, vous pouvez en afficher n'importe lequel.

Exemples

Exemple 1

7 3
3 1 2 3
3 3 4 5
3 5 6 7
0 0 1 1 1 1 1
YES
0 0 0 1 1 1 1

Exemple 2

7 3
3 1 2 3
3 3 4 5
3 5 6 7
1 0 1 0 1 0 1
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.