#include #include #include #include #include #include #include #include #include using namespace std; typedef pair P; vector > G1; vector > G2; int S[100]; vector tsort(const vector > &g) { int n = g.size(), k = 0; vector ord(n), in(n); for(auto &es : g) for(auto &e : es) in[e]++; queue q; for(int i = 0; i < n; ++i) if(in[i] == 0) q.push(i); while(q.size()) { int v = q.front(); q.pop(); ord[k++] = v; for(auto &e : g[v]) if(--in[e] == 0) q.push(e); } return *max_element(in.begin(), in.end()) == 0 ? ord : vector(); } int main() { cin.tie(0); ios::sync_with_stdio(false); int N, M; cin >> N >> M; G1 = vector >(N); G2 = vector >(N); for(int i = 0; i < M; i++) { int P, Q, R; cin >> P >> Q >> R; P--, R--; G1[R].emplace_back(P, Q); G2[R].emplace_back(P); } vector top = tsort(G2); S[N - 1] = 1; for(int i = 0; i < N; i++) { int u = top[i]; if(S[u] && G1[u].size()) { for(P p : G1[u]) { int v = p.first, q = p.second; S[v] += q * S[u]; } S[u] = 0; } } for(int i = 0; i < N - 1; i++) { cout << S[i] << endl; } }