[SDOI2019]热闹的聚会与尴尬的聚会
题号:NC50817
时间限制:C/C++/Rust/Pascal 2秒,其他语言4秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
Special Judge, 64bit IO Format: %lld

题目描述

小Q的生日快到了,他决定周末邀请一些朋友到他的新房子一起聚会!
他的联系薄上有n位好友,他们两两之间或者互相认识,或者互相不认识。小Q希望在周六办一个热闹的聚会,再在周日办一个尴尬的聚会。
  • 一场热闹度为p的聚会请来了任意多位好友,对于每一位到场的好友来说都有至少p位他认识的好友也参加了聚会,且至少对于一位到场的好友来说现场恰好有p位他认识的好友;
  • 一场尴尬度为q的聚会请来了恰好q位好友,且他们两两互不认识。
两场聚会可能有重复的参与者,联系薄上也有可能有某些好友同时缺席了两场聚会。小Q喜欢周六聚会的热闹度p与周日聚会的尴尬度q之间满足:
请帮助小Q找出一个可行的邀请方案。

输入描述:

输入含有多组测试数据,并在第一行给定一个整数T,表示总共有多少组测试数据。之后依次给出每一组数据。
每一组测试数据第一行给定两个整数n和m,依次表示联系薄中好友的总数,以及有多少对互相认识的好友。
之后m行每行给定两个正整数u和v,满足,表示第u个好友与第v个好友互相认识。

输出描述:

对于每一组数据输出两行,依次描述周六热闹的聚会的参加人员,与周日尴尬的聚会的参加人员列表:
第一行先输出一个正整数表示总共邀请来了多少位好友参加周六的聚会,再之后输出若干个不同的整数,按照任意顺序描述被邀请的是哪些好友。
第二行先输出一个正整数表示总共邀请来了多少位好友参加周日的聚会,再之后以任意顺序输出若干个不同的整数,同样描述了周日被邀请的好友。
如果有多组方案,你可以输出其中任何一组。
示例1

输入

复制
2
6 15
1 2
1 3
1 4
1 5
1 6
2 3
2 4
2 5
2 6
3 4
3 5
3 6
4 5
4 6
5 6
8 11
1 2
2 3
1 4
3 7
4 5
5 2
2 6
6 7
5 6
5 8
6 8

输出

复制
6 1 2 3 4 5 6
1 4
8 1 2 3 4 5 6 7 8
4 8 4 7 2

备注:

所有数据满足
子任务1(10分):
子任务2(10分):
子任务3(10分):
子任务4(10分):
子任务5(10分):
子任务6(10分):
子任务7(10分):
子任务8(10分):
子任务9(10分):
子任务10(10分):
注意:本题读入量很大,请注意自己代码在读入上的所需时间。