from collections import defaultdict from atcoder.scc import SCCGraph def scc(n: int, adj: dict[int, list[int]]) -> list[list[int]]: """グラフを強連結成分分解する。 Args: n: 頂点数 adj: 隣接リスト {u: [v...]} Returns: 強連結成分のリスト (トポロジカル順) """ g = SCCGraph(n) for u, vs in adj.items(): for v in vs: g.add_edge(u, v) return g.scc() N = int(input()) M = int(input()) xs = [] r_adj = defaultdict(list) rw_adj = defaultdict(list) indegs = [0] * N for _ in range(M): # P --(Q)--> R P, Q, R = map(int, input().split()) P -= 1 R -= 1 indegs[R] += 1 r_adj[R].append(P) rw_adj[R].append((P, Q)) cc = scc(N, r_adj) scores = [0] * N scores[N-1] = 1 for g in cc: for v in g: for to, w in rw_adj[v]: scores[to] += scores[v] * w starts = {i for i in range(N) if indegs[i] == 0} for i in range(N-1): if i in starts: print(scores[i]) else: print(0)