LG#B3613. 图的存储与出边的排序

提交4 通过1
通过率25%
时间限制1000ms
内存限制512MiB

题目描述

题目描述

给定一个 nn 个点 mm 条边的有向图 GG,结点编号从 11nn。对于 u=1,2,3,nu = 1, 2, 3, \dots n,依次完成如下要求:
对于 uu 的所有出边(即从 uu 出发的边),按照从小到大的顺序输出出边所指向的节点编号。

依次完成的含义是,先按顺序输出 u=1u = 1 的出边所指向的点的编号,再按顺序输出 u=2u = 2 的出边所指向的点的编号……最后按顺序输出 u=nu = n 的出边所指向的点的编号。

输入格式

本题单测试点内有多组数据

数据的第一行是一个整数 TT,表示数据的组数。

对于每组数据的格式如下:
每组数据的第一行是两个整数,分别表示点的个数 nn 和边的个数 mm
接下来 mm 行,每行两个整数 u,vu, v,表示一条由 uu 指向 vv 的边。

保证每组数据内不存在重边。

输出格式

对于每组数据:
输出 nn 行,每行若干个用空格隔开的整数。第 ii 行输出节点 ii 的出边所指向的节点编号。

注意,如果一个结点不存在出边,你同样需要输出一个空行

输入样例 #1

1
3 4
1 3
1 2
3 2
3 1

输出样例 #1

2 3

1 2

样例解释 #1

结点 1 的出边到达结点 2、3,按升序输出 2 3;结点 2 没有出边,因此第二行必须留空;结点 3 输出 1 2

输入样例 #2

2
2 2
1 1
2 1
2 2
1 2
2 2

输出样例 #2

1
1
2
2

样例解释 #2

有两组独立的图。第一组中,结点 1 的自环使第一行输出 1,结点 2 也输出 1。第二组的两行都输出 2;两组之间不额外插入分隔行。

输入样例 #3

1
4 5
4 4
2 3
1 4
2 1
3 2

输出样例 #3

4
1 3
2
4

数据范围

对于全部的测试点,保证 1T,n,m5×1051 \leq T, n, m \leq 5 \times 10^5,但同时各测试点的 nnmm 之和均不超过 5×1055 \times 10^5,即 n,m5×105\sum n, \sum m \leq 5 \times 10^5。且 1u,vn1 \leq u, v \leq n,每组数据内不存在重边。

请注意大量读入输出对程序效率造成的影响。

题目来源

洛谷 B3613