QOJ.ac

QOJ

Límite de tiempo: 3 s Límite de memoria: 512 MB Puntuación total: 100

#16305. Liste des routes

Estadísticas

Bajtysia et Bajteusz sont des voyageurs célèbres qui ont visité presque tous les recoins de Bajtocja. Ce pays se compose de $n$ villes, numérotées de $1$ à $n$, reliées par un réseau de routes à sens unique. Cependant, ils se sont lassés des méthodes de voyage traditionnelles – ils sont déjà allés partout où ils pouvaient se rendre.

Récemment, Bajtysia a acquis un ancien artefact magique : le Registre des Routes. Il permet la création de nouvelles routes à sens unique entre les villes. Il y a cependant un piège. La magie du registre est capricieuse et ne permet de créer une route entre deux villes que s'il est actuellement impossible de voyager de la première ville à la seconde en utilisant le réseau de routes existant (c'est-à-dire qu'il n'existe aucune séquence de routes menant de la première ville à la seconde ; il est toutefois possible qu'il existe une séquence de routes menant de la seconde ville à la première). Une tentative de créer une route entre des villes déjà reliées échouera et détruira le registre.

Pour Bajtysia et Bajteusz, c'est un défi merveilleux ! Ils ont immédiatement décidé qu'ils voulaient conjurer autant de nouvelles routes que possible.

Malheureusement, Bajtysia et Bajteusz sont trop occupés à planifier leur prochaine expédition pour résoudre ce problème par eux-mêmes. Aidez-les à planifier quelles routes doivent être créées une par une afin que leur nombre total soit aussi grand que possible.

Entrée

La première ligne de l'entrée contient deux entiers $n$ et $m$ ($1 \le n \le 1500$, $0 \le m \le n(n-1)$), représentant respectivement le nombre de villes et le nombre de routes à sens unique à Bajtocja. Les $m$ lignes suivantes contiennent les descriptions des routes. La $i$-ème de ces lignes (pour $1 \le i \le m$) contient deux entiers $a_i, b_i$ ($1 \le a_i, b_i \le n, a_i \neq b_i$), indiquant qu'il existe une route à sens unique de la ville $a_i$ vers la ville $b_i$. Les routes à sens unique décrites ne se répètent pas.

Sortie

Sur la première ligne de la sortie, imprimez un seul entier non négatif $k$ représentant le nombre maximum de routes à sens unique pouvant être créées de telle sorte que chaque route successive relie une paire de villes entre lesquelles il n'est pas possible de voyager actuellement. Les $k$ lignes suivantes doivent décrire les routes qui doivent être créées dans l'ordre. La $i$-ème de ces lignes (pour $1 \le i \le k$) doit contenir deux entiers $c_i, d_i$ représentant les villes entre lesquelles la $i$-ème route doit être créée. Au moment de la création de cette route, il ne doit pas être possible de voyager de la ville $c_i$ à la ville $d_i$ en utilisant les routes déjà existantes (c'est-à-dire à la fois les initiales et celles créées précédemment). S'il existe plusieurs solutions possibles, imprimez-en n'importe laquelle.

Exemples

Entrée 1

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

Sortie 1

3
4 1
6 4
7 6

Entrée 2

3 0

Sortie 2

5
3 1
3 2
2 1
2 3
1 2

Remarque

Explication de l'exemple : Dans le premier exemple, le réseau de routes initialement existant est illustré ci-dessous.

Il n'est pas possible de voyager de la ville 4 à la ville 1, donc une telle route peut être ajoutée pour obtenir le réseau de routes illustré ci-dessous.

Après avoir ajouté des routes de la ville 6 à la ville 4 et de la ville 7 à la ville 6, nous obtenons un réseau dans lequel il est possible de voyager entre chaque paire de villes. Aucune autre arête ne peut être ajoutée.

Sous-tâches

Sous-tâche Contraintes Points
1 $n \le 5$ 6
2 $m = 0$ 18
3 $n \le 500$ et $a_i < b_i$ pour chaque $1 \le i \le m$ 20
4 $n \le 50$ 18
5 $n \le 500$ 28
6 aucune contrainte supplémentaire 10

Si seule la première ligne de votre réponse est correcte, votre solution recevra 50 % des points pour ce test. Vous n'avez pas besoin d'imprimer les lignes suivantes 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.