Submission #1068559

#TimeUsernameProblemLanguageResultExecution timeMemory
1068559duckindogInside information (BOI21_servers)C++17
2.50 / 100
1264 ms2624 KiB
#include <bits/stdc++.h> using namespace std; const int N = 5'000 + 10; int n, k; vector<pair<int, int>> ad[N]; vector<tuple<int, int, int>> Q; int f[N]; int32_t main() { cin.tie(0)->sync_with_stdio(0); cin >> n >> k; for (int i = 1; i < n + k; ++i) { char type; cin >> type; if (type == 'S') { int a, b; cin >> a >> b; ad[a].push_back({b, i}); ad[b].push_back({a, i}); } if (type == 'Q') { int a, d; cin >> a >> d; Q.emplace_back(a, d, i); } if (type == 'C') { int d; cin >> d; Q.emplace_back(0, d, i); } } auto bfs = [&](int st, int ed, int time) { memset(f, 0, sizeof f); queue<int> q({st}); while (q.size()) { auto u = q.front(); q.pop(); if (u == ed) return true; for (const auto& [v, w] : ad[u]) { if (w > time) continue; if (f[u] < w) { f[v] = w; q.push(v); } } } return false; }; for (const auto& [a, d, i] : Q) { if (!a) continue; cout << (bfs(d, a, i) ? "yes" : "no") << "\n"; } }
#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...