QOJ.ac

QOJ

実行時間制限: 4 s メモリ制限: 512 MB 満点: 100

#16301. Contre-espionnage

統計

À Byteotia, il y a $n$ villes, numérotées de $1$ à $n$, et $n-1$ routes, chacune reliant directement deux villes. Depuis chaque ville, il est possible d'atteindre n'importe quelle autre ville de manière unique sans revenir sur ses pas.

Vous êtes responsable du contre-espionnage byteotien. Vous venez de recevoir l'information que des espions de la Bitotia hostile se sont infiltrés dans certaines villes ! Vous savez que les espions bitotiens opèrent toujours par paires. Lorsqu'un espion d'une paire découvre des informations utiles, il tente de rejoindre la ville où se trouve le second espion pour partager ses découvertes. Pour chacune des $q$ paires d'espions, vous savez exactement dans quelles villes se trouvent actuellement les espions de cette paire.

Votre tâche est de vous assurer qu'aucune paire d'espions ne puisse se rencontrer. Pour y parvenir, vous pouvez déclarer une mise en quarantaine dans n'importe quel ensemble de villes. Il est interdit d'entrer, de traverser ou de quitter une ville en quarantaine.

Les espions formant une paire peuvent se rencontrer si et seulement s'il existe une séquence de villes $x_1, x_2, \dots, x_k$, dont aucune n'a été placée en quarantaine, telle que $x_1$ est la ville où se trouve un espion, $x_k$ est la ville où se trouve l'autre espion, et pour tout $1 \le i \le k-1$, les villes $x_i$ et $x_{i+1}$ sont directement reliées par une route.

Naturellement, vous ne voulez pas paralyser tout le pays, vous souhaitez donc placer le moins de villes possible en quarantaine. Votre tâche est de calculer le nombre minimum de villes qui doivent être placées en quarantaine pour empêcher chaque paire d'espions de se rencontrer. De plus, vous devez fournir une telle liste minimale de villes à placer en quarantaine pour y parvenir.

Entrée

La première ligne de l'entrée contient deux entiers $n$ et $q$ ($2 \le n \le 5 \cdot 10^5$, $1 \le q \le 5 \cdot 10^5$), représentant respectivement le nombre de villes à Byteotia et le nombre de paires d'espions.

Les $n-1$ lignes suivantes contiennent la description des routes. La $i$-ième ligne (pour $1 \le i \le n-1$) contient deux entiers $a_i$ et $b_i$ ($1 \le a_i, b_i \le n$, $a_i \neq b_i$), signifiant que les villes $a_i$ et $b_i$ sont directement reliées par une route.

Les $q$ lignes suivantes contiennent la description des paires d'espions. La $i$-ième ligne (pour $1 \le i \le q$) contient deux entiers $c_i$ et $d_i$ ($1 \le c_i, d_i \le n$, $c_i \neq d_i$), représentant les villes où se trouve la $i$-ième paire d'espions (l'un est dans la ville $c_i$ et l'autre dans la ville $d_i$). Plusieurs espions (de paires différentes) peuvent se trouver dans la même ville.

Sortie

La première ligne de la sortie doit contenir un seul entier $s$, représentant le nombre minimum de villes qui doivent être placées en quarantaine pour empêcher chaque paire d'espions de se rencontrer. La deuxième ligne doit contenir $s$ entiers représentant les villes qui doivent être placées en quarantaine pour y parvenir.

Exemples

Entrée 1

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

Sortie 1

2
2 3

Remarque

Il y a trois paires d'espions, marquées sur le dessin par les lettres $A$, $B$ et $C$. Si les villes $2$ et $3$ sont placées en quarantaine (marquées par des cercles), aucune paire d'espions ne peut se rencontrer sans visiter l'une de ces villes. D'autres listes valides de villes à mettre en quarantaine sont par exemple $1$ et $3$, ou $1$ et $7$.

Tests supplémentaires

Les tests supplémentaires (0b, 0c, 0d, 0e) vérifient les cas limites : - 0a : Test de l'exemple ci-dessus. - 0b : $n=10, q=5$. - 0c : $n=500\,000, q=250\,000$, $a_i=i, b_i=i+1$ pour $1 \le i \le n-1$ (chemin), $c_i = 4 \cdot \lfloor \frac{i-1}{2} \rfloor + 1, d_i = 4 \cdot \lfloor \frac{i-1}{2} \rfloor + 3$ pour $i$ impair, $c_i = 4 \cdot \lfloor \frac{i-1}{2} \rfloor + 2, d_i = 4 \cdot \lfloor \frac{i-1}{2} \rfloor + 4$ pour $i$ pair ($1 \le i \le q$). - 0d : $n=262\,143, q=17, a_i=i+1, b_i=\lfloor \frac{i+1}{2} \rfloor$ pour $1 \le i \le n-1$, $c_i=2^i-1, d_i=2^{18}-2^{18-i}$ pour $1 \le i \le q$. - 0e : $n=500\,000, q=499\,999, a_i=1, b_i=i+1$ pour $1 \le i \le n-1$, $c_i=1, d_i=i+1$ pour $1 \le i \le q$.

Évaluation

Sous-tâche Contraintes Points
1 $n, q \le 20$ 9
2 $q \le 2$ 11
3 Chaque chemin reliant une paire d'espions intersecte au plus un autre chemin 17
4 $a_i = i, b_i = i + 1$ pour $1 \le i \le n - 1$ 12
5 $a_i = i + 1, b_i = \lfloor \frac{i+1}{2} \rfloor$ pour $1 \le i \le n - 1$ 23
6 Aucune contrainte supplémentaire 21

Si seule la première ligne de votre réponse est correcte, votre solution recevra 80 % des points pour ce test. Vous n'avez pas besoin de fournir la deuxième ligne pour recevoir ces points.

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.