QOJ.ac

QOJ

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

#17773. 社交網絡

الإحصائيات

題目背景

討論完令人頭疼的科研與審稿,茶話會的話題逐漸轉向了日常的社交。小 T 興致勃勃地分享了他的一個有趣發現:在某一常用的社交平台上,用戶彼此間的關注關係恰好都是嚴格的單向關注,即不存在兩名用戶互相關注的情況。

這個奇妙的現象立刻引起了大家的討論。小 S 順勢提取了該網路的部分統計數據,收集到了每位用戶的關注數與粉絲數。遺憾的是,她在傳閱數據的過程中不小心弄丟了一部分,最後只留下了一個由若干正整數構成的集合。小 S 發現,對於集合中的每一個元素,總能找到至少一個用戶,其關注數或粉絲數恰好等於該元素。

由於平台完整的關注結構對外保密,具體的社交關係網已無從知曉。為了驗證這些殘存數據的合理性,大家紛紛拿起了紙筆,嘗試著還原出符合條件的網路。為了增添幾分趣味與競技性,大家甚至就此展開了一場小小的比賽,看誰能構造出總關注數最少的社交網路。

在這一社交平台上,共有 $n$ 位用戶。小 S 收集到了一個大小為 $m$ 的數字集合 $\{c_1, \dots, c_m\}$。根據這些資訊,一個可能的關注網路可以抽象為一張滿足以下條件的有向圖 $G = (V, E)$:

  • 包含 $n$ 位用戶,即頂點集合 $V = \{1, 2, \dots, n\}$;
  • 不存在自己關注自己或重複關注的情況,即圖 $G$ 不含自環與重邊;
  • 所有關注關係均為嚴格的單向關注,即對於任意有向邊 $(u, v) \in E$,均滿足 $(v, u) \notin E$;
  • 對於集合中的每一個元素 $c_i$ ($1 \le i \le m$),圖 $G$ 中都至少存在一個頂點,其出度(對應關注數)或入度(對應粉絲數)恰好等於 $c_i$。

你需要根據小 S 收集到的資訊,還原出一個總關注數最少(即圖 $G$ 邊數最小)的關注網路。

輸入格式

輸入的第一行包含一個非負整數 $o \in \{0, 1\}$,表示輸出的參數。 輸入的第二行包含兩個正整數 $n, m$ ($1 \le m < n \le 10^6$),表示用戶數量與小 S 收集到的集合的大小。保證若 $o = 0$,則 $n \le 2 \times 10^3$。 輸入的第三行包含 $m$ 個兩兩不同的正整數 $c_1, c_2, \dots, c_m$ ($1 \le c_i \le n - 1$),表示小 S 收集到的集合中的元素。

輸出格式

輸出一行一個正整數 $k$,表示所有可能的關注網路中總關注數的最小值。 若 $o = 0$,則接下來輸出 $k$ 行,每行包含兩個正整數 $u, v$ ($1 \le u, v \le n$),表示用戶 $u$ 關注了用戶 $v$,即 $(u, v) \in E$。

範例

輸入格式 1

0
5 4
3 1 4 2

輸出格式 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.