#include #include using namespace std; struct Edge { int to, cost; }; typedef long long ll; const int kMAX_N = 110; const int kMAX_M = 1510; ll magnifications[kMAX_N]; int N, M; vector graph[kMAX_N]; int deg_minus[kMAX_N]; int P[kMAX_M], R[kMAX_M]; ll Q[kMAX_M]; // 倍率を返す ll DFS(int node) { if (magnifications[node] > 0) return magnifications[node]; if (node == N - 1) return 1; ll mag = 0; for (int i = 0; i < graph[node].size(); i++) { Edge e = graph[node][i]; mag += DFS(e.to) * e.cost; } return magnifications[node] = mag; } void Solve() { for (int i = 0; i < M; i++) { graph[P[i] - 1].push_back((Edge){R[i] - 1, Q[i]}); deg_minus[R[i] - 1]++; } for (int i = 0; i < N - 1; i++) { if (deg_minus[i] == 0) { cout << DFS(i) * 1 << endl; } else { cout << 0 << endl; } } } int main() { cin >> N >> M; for (int i = 0; i < M; i++) { cin >> P[i] >> Q[i] >> R[i]; } Solve(); return 0; }