結果
| 問題 | No.30 たこやき工場 | 
| コンテスト | |
| ユーザー |  | 
| 提出日時 | 2014-10-24 10:31:55 | 
| 言語 | C++11(廃止可能性あり) (gcc 13.3.0) | 
| 結果 | 
                                AC
                                 
                             | 
| 実行時間 | 3 ms / 5,000 ms | 
| コード長 | 1,160 bytes | 
| コンパイル時間 | 960 ms | 
| コンパイル使用メモリ | 78,872 KB | 
| 実行使用メモリ | 5,248 KB | 
| 最終ジャッジ日時 | 2024-12-21 05:18:05 | 
| 合計ジャッジ時間 | 1,751 ms | 
| ジャッジサーバーID (参考情報) | judge5 / judge1 | 
(要ログイン)
| ファイルパターン | 結果 | 
|---|---|
| other | AC * 17 | 
ソースコード
/*
  test : copy http://yukicoder.me/submissions/563
 */
#include <iostream>
#include <vector>
#include <set>
#include <map>
#include <queue>
#include <algorithm>
#include <cstring>
#include <cstdio>
#include <fstream>
#include <sstream>
using namespace std;
typedef long long ll;
int N, M;
vector< pair<int, int> > recipe[110];
bool done[110];
vector<int> dp[110];
vector<int> solve(int k){
    if(done[k])return dp[k];
    
    vector<int> res(N+1, 0);
    if(recipe[k].empty()){
        res[k] = 1;
    } else {
        for(int i=0;i<recipe[k].size();i++){
            pair<int, int> ps = recipe[k][i];
            
            vector<int> tmp = solve(ps.first);
            for(int i=0;i<tmp.size();i++)res[i] += tmp[i] * ps.second;
        }
    }
    
    done[k] = true;
    return dp[k] = res;
}
int main(){
    cin >> N >> M;
    
    for(int i=0;i<M;i++){
        int P, Q, R;
        cin >> P >> Q >> R;
        
        recipe[R].push_back(make_pair(P, Q));
    }
    
    vector<int> res = solve(N);
    for(int i=1;i<N;i++){
        cout << res[i] << endl;
    }
    
    return 0;
}
            
            
            
        