luogu#P14997. [Nordic OI 2020] Christmas Gifts

[Nordic OI 2020] Christmas Gifts

题目描述

在 Nordic Olympic Institute (NOI),SS 名学生有一个传统,即在圣诞节时与他们的朋友交换礼物。更准确地说,如果 AABB 是朋友,那么要么 AA 送给 BB 一份礼物,要么 BB 送给 AA 一份礼物。

去年圣诞节,NOI 发生了一起大丑闻,因为一些学生收到了很多礼物却没有送出任何礼物,而一些学生送出了很多礼物却没有收到任何礼物。NOI 需要你的帮助,使今年圣诞节的礼物交换更加公平。你需要决定谁应该给谁送礼物,即对于 AABB 之间的每一段友谊,你必须决定是 AA 应该送礼物给 BB,还是 BB 应该送礼物给 AA

gig_i 为学生 ii 送出的礼物数量,rir_i 为学生 ii 收到的礼物数量。NOI 管理层决定,一个公平的礼物交换应当最小化不公平分数 i=1Sgiri\sum_{i=1}^{S} |g_i - r_i|

给定包含 FF 段友谊的列表,计算可能的最小不公平分数,并为每一段友谊输出谁应该送礼物给谁。出于 GDPR(通用数据保护条例)的考虑,所有学生都已被编号为 1,,S1, \ldots, S,而非使用他们的姓名。

输入格式

  • 第一行:由空格分隔的整数 SSFF2S1000002 \leq S \leq 1000001F2000001 \leq F \leq 200000)。
  • 接下来的 FF 行:每行两个由空格分隔的整数 AABB,表示 AABB 是朋友(1A<BS1 \leq A < B \leq S)。

(输入中的所有友谊都是相互的,并且每段友谊在输入中只会出现一次。)

输出格式

  • 第一行:可能的最小不公平分数。
  • 接下来的 FF 行:每行两个整数 AABB,表示 AA 应该送礼物给 BB(你可以以任意顺序输出这些行,但每段友谊必须在输出中恰好出现一次)。
4 5
1 2
2 3
2 4
1 3
3 4
2
2 4
4 3
1 3
3 2
2 1

提示

在这个例子中,我们有 4 名学生和 5 段友谊。所示解并非唯一——任何正确的解都将被接受。

评分细则

你的解法将通过一组子任务进行测试。要获得一个子任务的分数,你需要通过该子任务中的所有测试用例。

# 分数 限制条件
1 15 S10S \leq 10F20F \leq 20
2 S500S \leq 500F10000F \leq 10000
3 50 无额外约束。
4 20 所有学生都有偶数个朋友。

翻译由 DeepSeek V3 完成