제출 #910110

#제출 시각아이디문제언어결과실행 시간메모리
910110MinaRagy06Inside information (BOI21_servers)C++17
5 / 100
1010 ms2644 KiB
#include <bits/stdc++.h>
using namespace std;
typedef int64_t ll;

const int N = 4005;
vector<array<int, 2>> adj[N];

bool dfs(int i, int prvt, int par, int tar) {
    if (i == tar) return 1;
    bool ok = 0;
    for (auto [nxt, t] : adj[i]) {
        if (nxt == par) continue;
        if (prvt > t) {
            ok |= dfs(nxt, t, i, tar);
        }
    }
    return ok;
}
int dfs2(int i, int prvt, int par) {
    int ans = 1;
    for (auto [nxt, t] : adj[i]) {
        if (nxt == par) continue;
        if (prvt < t) {
            ans += dfs2(nxt, t, i);
        }
    }
    return ans;
}
int main() {
    ios_base::sync_with_stdio(0), cin.tie(0);
    int n, q;
    cin >> n >> q;
    q += n - 1;
    for (int cur = 0; cur < q; cur++) {
        char t;
        int a, b;
        cin >> t >> a;
        if (t == 'S') {
            cin >> b;
            adj[a].push_back({b, cur});
            adj[b].push_back({a, cur});
        } else if (t == 'Q') {
            cin >> b;
            cout << (dfs(a, 1e9, -1, b)? "yes\n" : "no\n");
        } else {
            cout << dfs2(a, -1e9, -1) << '\n';
        }
    }
    return 0;
}

#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...
#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...