Submission #994212

#TimeUsernameProblemLanguageResultExecution timeMemory
994212vjudge1Jail (JOI22_jail)C++17
49 / 100
5072 ms494016 KiB
#include <algorithm> #include <iostream> #include <vector> using namespace std; vector<vector<int>> graph; vector<int> cur_path; bool dfs(int const cur, int const par, int const goal) { if (cur == goal) { cur_path.push_back(cur); return true; } for (int const& neigh : graph[cur]) { if (neigh == par) continue; if (dfs(neigh, cur, goal)) { cur_path.push_back(cur); return true; } } return false; } bool solve() { int n; cin >> n; graph.assign(n, {}); for (int i = 0; i < n - 1; i++) { int u, v; cin >> u >> v; u--; v--; graph[u].push_back(v); graph[v].push_back(u); } int m; cin >> m; vector<int> start(m); vector<int> end(m); vector<vector<int>> path(m); for (int i = 0; i < m; i++) { cin >> start[i] >> end[i]; start[i]--; end[i]--; cur_path.clear(); dfs(start[i], -1, end[i]); path[i] = move(cur_path); } vector<char> ended(m); vector<char> good(m); vector<vector<int>> in_path(n); for (int iter = 0; iter < m; iter++) { good.assign(m, true); in_path.assign(n, {}); for (int i = 0; i < m; i++) { if (ended[i]) { good[i] = false; continue; } for (int const& v : path[i]) in_path[v].push_back(i); } for (int i = 0; i < m; i++) { if (ended[i]) continue; for (int const& j : in_path[start[i]]) if (i != j) good[j] = false; if (in_path[end[i]].size() > 1) good[i] = false; } int const good_i = find(good.begin(), good.end(), true) - good.begin(); if (good_i == m) return false; ended[good_i] = true; } return true; } int main() { ios_base::sync_with_stdio(false); cin.tie(nullptr); int t; cin >> t; while (t--) cout << (solve() ? "Yes\n" : "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...