CF717H Pokermon League challenge
题目描述
欢迎来到宝可梦的世界,这些黄色的小老鼠似乎非常喜欢扑克!
好了,玩笑到此为止……
在即将到来的宝可梦联赛里,有 $n$ 名注册的宝可梦训练师,还有 $t$ 支现有的训练队伍,每支队伍属于两个联盟之一。由于训练师之间有很多矛盾,有 $e$ 对训练师彼此憎恨。这种憎恨是相互的,不会有重复的对,也没有训练师自己讨厌自己(毕竟宝可梦的世界还是很开心的!)。每位训练师都有一个包含他希望加入的队伍的愿望列表,长度为 $l_{i}$。
你的任务是将训练师分配到不同的队伍中,并将这些队伍分到两个联盟中,满足以下条件:
- 每个训练师只能属于一支队伍;
- 没有队伍会同时属于两个联盟;
- 两个联盟之间的总憎恨度至少要达到 $e/2$;
- 每个训练师必须加入他愿望列表中所列的某个队伍。
联盟之间的总憎恨度计算方法是:位于不同联盟的队伍中的训练师之间,彼此憎恨的训练师对数。
输入格式
第一行输入两个整数 $n$ 和 $e$($4 \leq n \leq 50000$,$2 \leq e \leq 100000$),分别表示宝可梦训练师的总数和互相憎恨的训练师对的数量。
宝可梦训练师编号从 $1$ 到 $n$。接下来的 $e$ 行中,每行包含两个整数 $a$ 和 $b$($1 \leq a, b \leq n$),表示训练师 $a$ 和 $b$ 互相憎恨。接下来的 $2n$ 行按以下格式给出:从训练师 1 开始,依次为每个训练师提供他想加入的队伍信息。信息第一部分是 $l_{i}$($16 \leq l_{i} \leq 20$),表示愿望列表的大小,然后是 $l_{i}$ 个整数 $t_{i,j}$($1 \leq t_{i,j} \leq T$),代表第 $i$ 个训练师希望加入的队伍编号。
每个训练师愿望列表中的队伍不会重复。所有出现在至少一个愿望列表中的队伍编号是连续的正整数集合 $\{1, 2, 3, \ldots, T\}$。这里 $T$ 的最大值可以到 $1000000$。
输出格式
输出两行。第一行应包含 $n$ 个数字,表示每位训练师被分配到的队伍编号。
第二行应包含 $T$ 个数字,表示每个队伍所属的联盟($1$ 或 $2$)。
**本翻译由 AI 自动生成**