답안 #1064316

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
1064316 2024-08-18T11:25:02 Z TheQuantiX 장난감 기차 (IOI17_train) C++17
28 / 100
306 ms 2648 KB
#include <bits/stdc++.h>

using namespace std;
using ll = long long;

constexpr ll INF = 1000000000000000000LL;

ll n, m, q, k, x, y, a, c;
vector<ll> G[5000];
vector<ll> Gr[5000];

vector<int> get_total(vector<int> a, vector<int> r, vector<int> u, vector<int> v, vector<ll> cnt) {
    queue<ll> q;
    vector<int> vis(n);
    for (int i = 0; i < n; i++) {
        if (r[i]) {
            q.push(i);
        }
    }
    while (!q.empty()) {
        ll x = q.front();
        q.pop();
        if (vis[x]) {
            continue;
        }
        vis[x] = 1;
        for (auto i : G[x]) {
            if (a[i] && !vis[i]) {
                q.push(i);
            }
            if (!a[i]) {
                cnt[i]--;
                if (cnt[i] == 0 && !vis[i]) {
                    q.push(i);
                }
            }
        }
    }
    return vis;
}

vector<int> solve1(vector<int> a, vector<int> r, vector<int> u, vector<int> v) {
    vector<int> ans(n);
    for (int i = n - 1; i >= 0; i--) {
        if (r[i]) {
            ans[i] = 1;
        }
        bool fl;
        if (a[i]) {
            fl = 0;
            for (auto j : Gr[i]) {
                if (ans[j]) {
                    fl = 1;
                    break;
                }
            }
        }
        else {
            fl = 1;
            for (auto j : Gr[i]) {
                if (!ans[j]) {
                    fl = 0;
                    break;
                }
            }
        }
        ans[i] = fl;
    }
    return ans;
}

vector<int> who_wins(vector<int> a, vector<int> r, vector<int> u, vector<int> v) {
    n = a.size();
    m = u.size();
    vector<ll> cnt(n);
    vector<int> ans(n);
    for (int i = 0; i < n; i++) {
        G[i].clear();
        Gr[i].clear();
    }
    set<ll> st;
    for (int i = 0; i < m; i++) {
        cnt[u[i]]++;
        st.insert(v[i] - u[i]);
        G[v[i]].push_back(u[i]);
        Gr[u[i]].push_back(v[i]);
    }
    if (st.count(0)) {
        st.erase(0);
    }
    if (st.count(1)) {
        st.erase(1);
    }
    if (st.size() == 0) {
        return solve1(a, r, u, v);
    }
    auto cnt1 = cnt;
    for (int i = 0; i < n; i++) {
        if (r[i]) {
            cnt = cnt1;
            queue<ll> q;
            vector<int> vis(n);
            q.push(i);
            while (!q.empty()) {
                ll x = q.front();
                q.pop();
                if (vis[x]) {
                    continue;
                }
                vis[x] = 1;
                for (auto j : G[x]) {
                    if (a[j] && !vis[j]) {
                        q.push(j);
                    }
                    if (!a[j]) {
                        cnt[j]--;
                        if (cnt[j] == 0 && !vis[j]) {
                            q.push(j);
                        }
                    }
                }
            }
            bool fl;
            if (a[i]) {
                fl = 0;
                for (int j : Gr[i]) {
                    if (vis[j]) {
                        fl = 1;
                        break;
                    }
                }
            }
            else {
                fl = 1;
                for (int j : Gr[i]) {
                    if (!vis[j]) {
                        fl = 0;
                        break;
                    }
                }
            }
            if (fl) {
                for (int j = 0; j < n; j++) {
                    ans[j] |= vis[j];
                }
            }
        }
    }
    return ans;
}
# 결과 실행 시간 메모리 Grader output
1 Correct 4 ms 1372 KB Output is correct
2 Correct 3 ms 1368 KB Output is correct
3 Correct 3 ms 1372 KB Output is correct
4 Correct 3 ms 1204 KB Output is correct
5 Correct 3 ms 1292 KB Output is correct
6 Correct 3 ms 1200 KB Output is correct
7 Correct 3 ms 1372 KB Output is correct
8 Correct 3 ms 1372 KB Output is correct
9 Correct 3 ms 1372 KB Output is correct
10 Correct 3 ms 1288 KB Output is correct
11 Correct 3 ms 1368 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Incorrect 0 ms 604 KB 3rd lines differ - on the 2nd token, expected: '1', found: '0'
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 37 ms 2260 KB Output is correct
2 Correct 78 ms 2140 KB Output is correct
3 Correct 116 ms 2140 KB Output is correct
4 Correct 290 ms 2396 KB Output is correct
5 Correct 61 ms 2396 KB Output is correct
6 Correct 15 ms 2396 KB Output is correct
7 Correct 306 ms 2140 KB Output is correct
8 Correct 8 ms 2140 KB Output is correct
9 Correct 8 ms 2140 KB Output is correct
10 Correct 8 ms 2140 KB Output is correct
11 Correct 7 ms 2068 KB Output is correct
12 Correct 7 ms 1920 KB Output is correct
13 Correct 9 ms 2356 KB Output is correct
14 Correct 14 ms 2392 KB Output is correct
15 Correct 8 ms 2392 KB Output is correct
16 Correct 9 ms 2396 KB Output is correct
17 Correct 9 ms 2256 KB Output is correct
18 Correct 101 ms 1656 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Incorrect 21 ms 1884 KB 3rd lines differ - on the 1st token, expected: '1', found: '0'
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 9 ms 2392 KB Output is correct
2 Correct 10 ms 2648 KB Output is correct
3 Correct 14 ms 2352 KB Output is correct
4 Correct 7 ms 2052 KB Output is correct
5 Correct 1 ms 600 KB Output is correct
6 Correct 3 ms 1372 KB Output is correct
7 Correct 4 ms 1628 KB Output is correct
8 Correct 5 ms 1628 KB Output is correct
9 Correct 6 ms 1672 KB Output is correct
10 Correct 2 ms 856 KB Output is correct
11 Correct 5 ms 1628 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 4 ms 1372 KB Output is correct
2 Correct 3 ms 1368 KB Output is correct
3 Correct 3 ms 1372 KB Output is correct
4 Correct 3 ms 1204 KB Output is correct
5 Correct 3 ms 1292 KB Output is correct
6 Correct 3 ms 1200 KB Output is correct
7 Correct 3 ms 1372 KB Output is correct
8 Correct 3 ms 1372 KB Output is correct
9 Correct 3 ms 1372 KB Output is correct
10 Correct 3 ms 1288 KB Output is correct
11 Correct 3 ms 1368 KB Output is correct
12 Incorrect 0 ms 604 KB 3rd lines differ - on the 2nd token, expected: '1', found: '0'
13 Halted 0 ms 0 KB -