CF1198C Matching vs Independent Set

题目描述

给定一个包含 $3 \cdot n$ 个顶点和 $m$ 条边的图。你需要找到一个大小为 $n$ 的匹配,或者一个大小为 $n$ 的独立集。 一组边称为匹配,当且仅当任意两条边没有公共端点。 一组顶点称为独立集,当且仅当任意两点之间都没有边相连。

输入格式

第一行包含一个整数 $T \ge 1$,表示你需要处理的图的数量。接下来是 $T$ 个图的描述。 每个图的描述的第一行包含两个整数 $n$ 和 $m$,其中 $3 \cdot n$ 是该图的顶点数,$m$ 是该图的边数($1 \leq n \leq 10^{5}$,$0 \leq m \leq 5 \cdot 10^{5}$)。 接下来的 $m$ 行,每行包含两个整数 $v_i$ 和 $u_i$($1 \leq v_i, u_i \leq 3 \cdot n$),表示在顶点 $v_i$ 和 $u_i$ 之间有一条边。 保证图中没有自环和重边。 保证所有图中 $n$ 的总和不超过 $10^{5}$,所有图中 $m$ 的总和不超过 $5 \cdot 10^{5}$。

输出格式

对于每个图,输出一组答案。 如果你找到了一个大小为 $n$ 的匹配,第一行输出 "Matching"(不带引号),第二行输出 $n$ 个整数,表示匹配中边的编号。边按输入顺序编号,从 $1$ 到 $m$。 如果你找到了一个大小为 $n$ 的独立集,第一行输出 "IndSet"(不带引号),第二行输出 $n$ 个整数,表示独立集中的顶点编号。 如果既没有大小为 $n$ 的匹配,也没有大小为 $n$ 的独立集,输出 "Impossible"(不带引号)。 边和顶点的输出顺序可以任意。 如果有多组解,输出任意一组即可。特别地,如果既存在大小为 $n$ 的匹配,也存在大小为 $n$ 的独立集,则你只需输出其中一种方案。

说明/提示

前两个图是相同的,既存在大小为 $1$ 的匹配,也存在大小为 $1$ 的独立集。任意一种匹配或独立集都是正确答案。 第三个图不存在大小为 $2$ 的匹配,但存在大小为 $2$ 的独立集。实际上还存在大小为 $5$ 的独立集:2 3 4 5 6。但这样的答案不正确,因为题目要求找到恰好大小为 $n$ 的独立集(或匹配)。 第四个图不存在大小为 $2$ 的独立集,但存在大小为 $2$ 的匹配。 由 ChatGPT 4.1 翻译