黄玫瑰

题目描述

给定一张包含 $n$ 个点的简单有向无环图 $G$,点 $i$ 的点权设为 $w_i$,但**点权不是给定的**。 你需要构造一个包含至多 $2\times n$ 个点和恰好 $n$ 条边的有向无环图 $G'$,你需要为 $G'$ 的每条边钦定某个 $w_i$ 作为它的边权,使得 $G'$ 和 $G$ 的**最长路**长度相等。 在 $G$ 中一条路径的长度定义为其中所有点权和,$G'$ 中则为所有边权和。 然而,所有 $w_i$ 都不是给定的,所以你构造的 $G'$ 需要满足:对于任何一种可能的**正数**序列 $[w_1,\ldots,w_n]$,$G$ 和 $G'$ 的最长路长度都要相等。 请构造 $G'$,或说明它不存在。

输入输出格式

输入格式


第一行:两个整数 $n,m$。 接下来 $m$ 行:每行两个整数 $x,y$,表示存在一条点 $x$ 到点 $y$ 的有向边。

输出格式


如果不存在满足题意的 $G'$,则输出一行一个 $-1$。 否则,输出 $n+1$ 行: 第一行:一个整数 $N$,表示你构造的 $G'$ 的点数。 接下来 $n$ 行:每行三个整数 $x,y,z$,表示 $G'$ 中存在一条点 $x$ 到点 $y$ 的边,边权等于 $w_z$。 你需要保证 $0\leq N\leq 2\times n$,$1\leq x,y\leq N$,$1\leq z\leq n$。 若有多种可能的解,任意输出一个即可。

输入输出样例

输入样例 #1

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

输出样例 #1

7
1 2 1
1 2 5
2 3 2
3 4 3
3 5 6
4 6 4
5 7 7

输入样例 #2

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

输出样例 #2

-1

说明

**【样例 #1 解释】** 如下图,左为 $G$,右为 $G'$,颜色相同的点/边表示权值相同: ![](https://cdn.luogu.com.cn/upload/image_hosting/i0wuxctf.png) 注意这只是一种可能的答案,其他正确的答案也可通过。 --- **【样例 #2 解释】** 下图为 $G$,不存在合法的 $G'$: ![](https://cdn.luogu.com.cn/upload/image_hosting/tek49neu.png) --- **【数据范围】** 对于全部数据:$1\leq n\leq 20000$,$1\leq m\leq 3\times 10^5$,$1\leq x,y\leq n$,保证给定的图无环且无重边。 | 子任务编号 | $n\leq$ | $m\leq$ | 特殊性质 | 分值 | | :----------------: | :-----: | :------------: | :---------------------------: | :--: | | $\text{Subtask 1}$ | $5000$ | $4999$ | $m=n-1$,每个点入度不超过 $1$ | $18$ | | $\text{Subtask 2}$ | $5000$ | $4999$ | $m=n-1$,每个点出度不超过 $1$ | $19$ | | $\text{Subtask 3}$ | $20$ | $50$ | 无 | $20$ | | $\text{Subtask 4}$ | $5000$ | $10000$ | 无 | $21$ | | $\text{Subtask 5}$ | $20000$ | $3\times 10^5$ | 无 | $22$ | --- ![](https://cdn.luogu.com.cn/upload/image_hosting/jepg6g1u.png)