Submission #994165

#TimeUsernameProblemLanguageResultExecution timeMemory
994165vjudge1Jail (JOI22_jail)C++17
0 / 100
7 ms9048 KiB
#include <bits/stdc++.h> using namespace std; using ll = long long; const int MAXN = 120'001; vector<int> g[MAXN], g2[MAXN]; int tin[MAXN], tout[MAXN], s[MAXN], e[MAXN], par[MAXN], col[MAXN], timer; bool ok; void dfs(int u, int p = -1) { tin[u] = timer++; par[u] = p; for (int v : g[u]) { if (v != p) dfs(v, u); } tout[u] = timer++; } void dfs2(int u) { col[u] = 1; for (int v : g2[u]) { if (col[v] == 0) dfs2(v); else if (col[v] == 1) ok = false; } col[u] = 2; } bool is_ancestor(int u, int v) { return tin[u] <= tin[v] && tout[v] <= tout[u]; } void solve() { int n; cin >> n; ok = true; fill(s, s+n+1, 0); fill(e, e+n+1, 0); fill(col, col+n+1, 0); timer = 1; for (int i = 1; i <= n; i++) { g[i].clear(); g2[i].clear(); } for (int i = 0; i < n-1; i++) { int u, v; cin >> u >> v; g[u].emplace_back(v); g[v].emplace_back(u); } dfs(1); int m; cin >> m; vector<pair<int, int>> edges(m+1); for (int i = 1; i <= m; i++) { cin >> edges[i].first >> edges[i].second; auto [u, v] = edges[i]; s[u] = e[v] = i; } auto nxt = [&](int u, int v) { if (u == v) return -1; if (is_ancestor(u, v)) { for (int i : g[u]) { if (par[u] != i && is_ancestor(i, v)) { return i; } } } else { return par[u]; } }; for (int i = 1; i <= m; i++) { auto [u, v] = edges[i]; while (u != -1) { if (e[u] && e[u] != i) { g2[i].emplace_back(e[u]); } u = nxt(u, v); } } for (int i = 1; i <= m; i++) { if (col[i] == 0) dfs2(i); } cout << (ok?"Yes\n":"No\n"); } int main() { ios::sync_with_stdio(0); cin.tie(0); int t; cin >> t; while (t--) { solve(); } return 0; }

Compilation message (stderr)

jail.cpp: In lambda function:
jail.cpp:70:5: warning: control reaches end of non-void function [-Wreturn-type]
   70 |     };
      |     ^
#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...