QOJ.ac

QOJ

実行時間制限: 1 s メモリ制限: 1024 MB 満点: 100 ハック可能 ✓

#18701. Rumor

統計

¿Crees en los rumores?

En un famoso experimento psicológico, se pidió a las personas que observaran dos líneas y dijeran cuál era más larga. En realidad, todos menos una persona eran cómplices del experimentador. Los cómplices afirmaron que la línea más corta era, de hecho, la más larga. Al ver que todos los demás daban la misma respuesta, el verdadero sujeto de prueba también afirmó que la línea más corta era la más larga. Este experimento demostró que las personas están fuertemente influenciadas por quienes las rodean, y los rumores funcionan de la misma manera.

Un rumor comienza con los difusores iniciales. Puede haber varios difusores iniciales y, aparte de ellos, nadie crea ni cree en un rumor por sí mismo.

Cada minuto, las personas que creen en el rumor lo difunden simultáneamente a todos sus conocidos. Una persona en la multitud comienza a creer en el rumor cuando al menos la mitad de sus conocidos ya creen en él.

Dado que, desde el momento en que alguien cree en un rumor, deja de escuchar otras versiones, una vez que se cree en un rumor, se sigue creyendo en él para siempre.

En este problema, determinaremos el tiempo en el que cada persona comienza a creer en el rumor por primera vez.

Entrada

La primera línea contiene el número de personas $N$. ($1 \le N \le 200\,000$), lo que significa que hay personas numeradas del 1 al $N$.

A partir de la segunda línea, se proporcionan $N$ líneas. La línea $i$-ésima ($1 \le i \le N$) contiene los números de los conocidos de la persona $i$, seguidos de un $0$ que indica el final de la entrada para esa línea. Los números son números naturales entre $1$ y $N$, y no hay números duplicados en la misma línea. No hay casos en los que una persona sea su propio conocido o en los que la relación de conocidos sea unilateral; el número total de relaciones bidireccionales de conocidos no supera $1\,000\,000$.

La siguiente línea contiene el número de difusores iniciales del rumor, $M$. ($1 \le M \le N$).

La última línea contiene los números de los difusores iniciales separados por espacios. Los números de los difusores iniciales no están duplicados.

Salida

Imprime $N$ enteros $t_1, t_2, \dots, t_N$ separados por espacios. $t_i$ es el tiempo (en minutos) en el que la persona $i$ comienza a creer en el rumor por primera vez, o $-1$ si no cree en el rumor incluso después de que haya pasado suficiente tiempo. Se considera que los difusores iniciales comienzan a creer en el rumor desde el minuto $0$.

Ejemplos

Entrada 1

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

Salida 1

0 1 2 3 4 0 -1

Entrada 2

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

Salida 2

4 4 3 3 2 0 1

Nota

Ejemplo 1

  • Minuto 0: Los difusores iniciales (personas 1 y 6) generan el rumor.
  • Minuto 1: La persona 1 difunde el rumor a las personas 2 y 3. La persona 2 comienza a creer en el rumor porque 1 de sus 2 conocidos ya cree en él. La persona 3 no cree en el rumor porque solo 1 de sus 3 conocidos cree en él. La persona 6 no tiene conocidos a quienes difundir el rumor.
  • Minuto 2: Las personas 1 y 2 difunden el rumor a la persona 3. Como 2 de sus 3 conocidos (más de la mitad) creen en el rumor, la persona 3 comienza a creer en él a partir del minuto 2.
  • Minuto 3: La persona 3 difunde el rumor a la persona 4. La persona 4 comienza a creer en él.
  • Minuto 4: La persona 5 también comienza a creer en el rumor. La persona 7 no cree en el rumor incluso después de que pase suficiente tiempo.

Figura 1. Diagrama del proceso de difusión del rumor para el Ejemplo 1

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.