找孙子
时间限制:C/C++/Rust/Pascal 2秒,其他语言4秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
64bit IO Format: %lld

题目描述

ym 刚刚被他的儿子冷落了,他现在想要找他的孙子诉诉苦

给定一个有向无环图,请你找出对于每个节点,对于其作为爷爷节点时,存在多少对爷爷-孙子关系

爷爷-孙子关系的定义是,如果在有向无环图中存在有向边 (x, y)(y, z), 那么称 zx 的孙子, 有序对组 [(x, y), (y, z)] 称为一个爷爷-孙子关系

请注意: 对于相同的一对爷爷,孙子节点,可能存在不同的中间节点,使得爷爷-孙子关系数量大于一

输入描述:

第一行输入两个正整数 n, m, 数据保证 1 \le n \le 10^6, 1 \le m \le 2 \times 10^6

接下来 m 行,每行两个正整数 u, v 表示存在一条有向边 (u, v)

数据保证不存在重边和自环

输出描述:

输出一行 n 个数字,用空格分隔开,第 i 个数字表示编号为 i 的节点的孙子数量
示例1

输入

复制
5 10
5 3
2 3
1 2
4 1
1 3
4 2
2 5
4 3
1 5
4 5

输出

复制
3 1 0 6 0

说明