#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; #define INF 1000000000 #define EPS 1e-9 #define PI acos(-1) typedef long long ll; typedef pair P; #define MAX_N 101 #define MAX_M 1501 int N, M; int p[MAX_M], q[MAX_M], r[MAX_M]; vector

mate[MAX_N];//i番目の材料を作るのに必要な材料 //first:材料の原料の番号 //second:必要となる個数 int ans[MAX_N];//i番目の材料が何個必要か vector

memo[MAX_N]; bool flag[MAX_N]; //DFS+メモ化で解く //pos:現在見ている材料 void solve(int pos, int num){ if(mate[pos].size() == 0){ ans[pos] += num; return; } else{ for(int i = 0; i < mate[pos].size(); i++){ solve(mate[pos][i].first,num * mate[pos][i].second); } } return; } int main(){ cin >> N >> M; for(int i = 0; i < M; i++){ cin >> p[i] >> q[i] >>r[i]; mate[r[i]].push_back(P(p[i], q[i])); } solve(N, 1);//解く for(int i = 1; i <= N-1; i++){ cout << ans[i] << endl; } return 0; }