QOJ.ac

QOJ

حد الوقت: 1.0 s حد الذاكرة: 256 MB مجموع النقاط: 100 قابلة للهجوم ✓

#17773. Réseau social

الإحصائيات

Contexte

Après avoir terminé une discussion fastidieuse sur la recherche et la relecture, le sujet de la discussion s'est progressivement tourné vers les interactions sociales quotidiennes. Xiao T a partagé avec enthousiasme une découverte intéressante : sur une plateforme sociale couramment utilisée, les relations de suivi entre les utilisateurs sont strictement unidirectionnelles, c'est-à-dire qu'il n'existe pas de cas où deux utilisateurs se suivent mutuellement.

Ce phénomène curieux a immédiatement suscité une discussion. Xiao S a profité de l'occasion pour extraire certaines données statistiques du réseau, collectant le nombre de suivis et d'abonnés de chaque utilisateur. Malheureusement, lors de la transmission des données, elle en a accidentellement perdu une partie, ne laissant qu'un ensemble composé de plusieurs entiers positifs. Xiao S a découvert que pour chaque élément de l'ensemble, il est toujours possible de trouver au moins un utilisateur dont le nombre de suivis ou le nombre d'abonnés est exactement égal à cet élément.

Comme la structure complète des suivis de la plateforme est confidentielle, le réseau social spécifique est inconnu. Afin de vérifier la plausibilité de ces données résiduelles, tout le monde a pris du papier et un crayon pour tenter de reconstruire un réseau conforme aux conditions. Pour ajouter un peu de plaisir et de compétitivité, ils ont même lancé un petit concours pour voir qui pourrait construire le réseau social avec le nombre total de suivis le plus faible.

Sur cette plateforme sociale, il y a $n$ utilisateurs. Xiao S a collecté un ensemble de nombres de taille $m$, $\{c_1, \dots, c_m\}$. Selon ces informations, un réseau de suivi possible peut être modélisé par un graphe orienté $G = (V, E)$ satisfaisant les conditions suivantes :

  • Il contient $n$ utilisateurs, soit l'ensemble des sommets $V = \{1, 2, \dots, n\}$ ;
  • Il n'existe pas d'utilisateur se suivant lui-même ou de suivi répété, c'est-à-dire que le graphe $G$ ne contient ni boucle ni arête multiple ;
  • Toutes les relations de suivi sont strictement unidirectionnelles, c'est-à-dire que pour toute arête orientée $(u, v) \in E$, on a $(v, u) \notin E$ ;
  • Pour chaque élément $c_i$ de l'ensemble ($1 \le i \le m$), il existe au moins un sommet dans le graphe $G$ dont le degré sortant (correspondant au nombre de suivis) ou le degré entrant (correspondant au nombre d'abonnés) est exactement égal à $c_i$.

Vous devez, à partir des informations collectées par Xiao S, reconstruire un réseau de suivi avec un nombre total de suivis minimal (c'est-à-dire un graphe $G$ avec le nombre minimal d'arêtes).

Entrée

La première ligne de l'entrée contient un entier non négatif $o \in \{0, 1\}$, représentant le paramètre de sortie.

La deuxième ligne de l'entrée contient deux entiers positifs $n, m$ ($1 \le m < n \le 10^6$), représentant le nombre d'utilisateurs et la taille de l'ensemble collecté par Xiao S. Il est garanti que si $o = 0$, alors $n \le 2 \times 10^3$.

La troisième ligne de l'entrée contient $m$ entiers positifs distincts deux à deux $c_1, c_2, \dots, c_m$ ($1 \le c_i \le n - 1$), représentant les éléments de l'ensemble collecté par Xiao S.

Sortie

Affichez sur une ligne un entier positif $k$, représentant le nombre minimal total de suivis parmi tous les réseaux de suivi possibles.

Si $o = 0$, affichez ensuite $k$ lignes, chaque ligne contenant deux entiers positifs $u, v$ ($1 \le u, v \le n$), indiquant que l'utilisateur $u$ suit l'utilisateur $v$, soit $(u, v) \in E$.

Exemples

Entrée 1

0
5 4
3 1 4 2

Sortie 1

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

Editorials

IDTypeStatusTitlePosted ByLast UpdatedActions
#1596EditorialOpenOfficial EditorialAnonymous2026-04-22 17:09:50View

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.