P14500 [NCPC 2025] Follower Forensics

题目描述

你的社交媒体公司 ConnectHub 以其网络中信息传播的高效便捷而自豪。 :::align{center} ![](https://cdn.luogu.com.cn/upload/image_hosting/8a5w3ury.png) ::: 用户可以通过分享按钮直接将帖子分享给自己的关注者,也可以通过在评论区发帖把内容传递给自己所关注的账号。ConnectHub 因其用户的强大传播力而闻名:任意账号发布的帖子,都能够通过一系列分享或评论传播到任何其他账号。 但灾难发生了:一次数据库事故清除了所有 “谁关注了谁” 的记录。不过似乎仍有部分数据幸存——对每个账号来说,你仍然知道它关注了多少账号,以及它有多少关注者。当然,这些数字也有可能已被破坏,但这是你仅剩的全部信息。 你的任务是重建丢失的关注关系数据库,使得每个账号的关注数与被关注数都与给定的数据一致,并且保证 ConnectHub 再次实现完全的可传播性。

输入格式

输入包含: - 一行,一个整数 $n$,表示账号数量,满足 $1 \le n \le 100\,000$; - 一行,包含 $n$ 个整数 $a_1, \ldots, a_n$,满足对每个 $i$ 均有 $0 \le a_i \le n$,其中 $a_i$ 表示第 $i$ 个账号关注的账号数; - 一行,包含 $n$ 个整数 $b_1, \ldots, b_n$,满足对每个 $i$ 均有 $0 \le b_i \le n$,其中 $b_i$ 表示第 $i$ 个账号的关注者数量。 此外,保证: $$ \sum_{i=1}^n a_i \;+\; \sum_{i=1}^n b_i \;\le\; 2\,000\,000. $$ 需要注意的是,输入数据并不保证一定存在可重建的网络,不管该网络是否满足完全传播性。对熟悉相关术语的人来说,“完全传播性”等价于弱连通性。

输出格式

如果存在可行重建方案,则输出一个网络: - 第一行输出两个整数:账号数量 $n$ 与连接数量 $m$(即关注关系数量),这里的 $n$ 与输入一致; - 接下来 $m$ 行,每行包含两个整数 $a$ 和 $b$,表示账号 $a$ 关注账号 $b$。 否则输出 `impossible`。 注意:一个账号不能关注同一个账号两次,也不能关注自己。

说明/提示

翻译由 ChatGPT-5 完成