#include #include #include #include using namespace std; const int MAXN = 100; typedef unsigned long long ull; int N,M; int matrix[MAXN][MAXN]; bool flg[MAXN]; ull memo[MAXN][MAXN]; ull item[MAXN]; set s; void dfs(int i, ull n, ull *out){ if(s.count(i)){ cout << "矛盾しています。" << endl; exit(1); } s.insert(i); //cout << "i = " << i << ", n = " << n << endl; if(!flg[i]){ bool f = false; for(int j = 0; j < N; j++){ if(matrix[i][j] > 0){ dfs(j, matrix[i][j], memo[i]); f = true; } } if(!f){ memo[i][i] = 1; } flg[i] = true; } for(int j = 0; j < N; j++){ out[j] += memo[i][j] * n; } s.erase(i); } int main(){ cin >> N >> M; for(int i = 0; i < M; i++){ int P,Q,R; cin >> P >> Q >> R; if(matrix[R-1][P-1]){ cout << "不正データ" << endl; exit(1); } matrix[R-1][P-1] = Q; } dfs(N-1, 1, item); for(int i = 0; i < N-1; i++){ cout << item[i] << endl; } return 0; }