제출 #607415

#제출 시각아이디문제언어결과실행 시간메모리
607415fvogel499장난감 기차 (IOI17_train)C++17
0 / 100
1716 ms1040 KiB
#include "train.h"
#include <bits/stdc++.h>
 
using namespace std;
 
#define vi vector<int>
#define size(x) (int)((x).size())
 
std::vector<int> who_wins(std::vector<int> a, std::vector<int> r, std::vector<int> u, std::vector<int> v) {
	int n = size(a);
    vi rg [n];
    for (int i = 0; i < size(u); i++) {
        rg[v[i]].push_back(u[i]);
    }
	int dp [n];
    for (int i = 0; i < n; i++) dp[i] = 0;
    int sc = 0;
    for (int i : r) if (i) sc++;
    for (int _ = 0; _ < sc+3; _++) {
        for (int i = 0; i < n; i++) {
            vi to;
            for (int j : rg[i]) {
                to.push_back(dp[j]);
            }
            if (to.empty()) continue;
            int use = to[0];
            if (a[i] == 0) {
                for (int j : to) {
                    use = min(use, j);
                }
            }
            else {
                for (int j : to) {
                    use = max(use, j);
                }
            }
            if (r[i]) {
                use++;
            }
            dp[i] = max(dp[i], use);
        }
    }
    vi win;
    for (int i = 0; i < n; i++) {
        win.push_back((dp[i] >= sc+1));
    }
    return win;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...