제출 #426641

#제출 시각아이디문제언어결과실행 시간메모리
426641tengiz05Bitaro’s Party (JOI18_bitaro)C++17
0 / 100
2 ms332 KiB
#include <bits/stdc++.h>
struct segtree{
    int n;
    std::vector<int> t;
    segtree(int n) : n(n), t(2 * n, 0) { }
    void update(int p, int val) {
        for (t[p += n] += val; p > 1; p >>= 1) {
            t[p >> 1] = std::min(t[p], t[p ^ 1]);
        }
    }
    int get(int l, int r) {
        int res = 1e9;
        for (l += n, r += n; l <= r; l >>= 1, r >>= 1) {
            if (l % 2 == 1) res = std::min(res, t[l++]);
            if (r % 2 == 0) res = std::min(res, t[r--]);
        }
        return res;
    }
};
int main() {
    std::ios::sync_with_stdio(false);
    std::cin.tie(nullptr);
    int n, m, q;
    std::cin >> n >> m >> q;
    std::vector<std::vector<int>> e(n), p(n);
    for (int i = 0; i < m; i++) {
        int u, v;
        std::cin >> u >> v;
        u--;
        v--;
        e[u].push_back(v);
        p[v].push_back(u);
    }
    std::vector<int> dp(n);
    segtree seg(n);
    for (int u = 0; u < n; u++) {
        for (auto v : p[u]) {
            dp[u] = std::max(dp[u], dp[v] + 1);
        }
        seg.update(u, dp[u]);
    }
    while (q--) {
        int t, k;
        std::cin >> t >> k;
        t--;
        std::vector<int> c(k);
        for (int i = 0, x; i < k; i++) {
            std::cin >> c[i];
            c[i]--;
            seg.update(c[i], 1e9);
        }
        int ans = std::max(-1, dp[t] - seg.get(0, t));
        std::cout << ans << "\n";
        for (auto x : c) {
            seg.update(x, -1e9);
        }
    }
    return 0;
}

컴파일 시 표준 에러 (stderr) 메시지

bitaro.cpp: In function 'int main()':
bitaro.cpp:47:25: warning: unused variable 'x' [-Wunused-variable]
   47 |         for (int i = 0, x; i < k; i++) {
      |                         ^
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...