Submission #887640

#TimeUsernameProblemLanguageResultExecution timeMemory
887640TAhmed33Jail (JOI22_jail)C++98
5 / 100
593 ms1048576 KiB
#include <bits/stdc++.h> using namespace std; int n, m; vector <int> adj[251]; vector <int> g, e, f; bool dfs (int pos, int par, int c) { if (pos == c) { g.push_back(pos); return 1; } bool f2 = 0; for (auto j : adj[pos]) { if (j == par) continue; f2 |= dfs(j, pos, c); } if (f2) g.push_back(pos); return f2; } int dp[251][251]; int ans (int p1, int p2) { int &ret = dp[p1][p2]; if (ret != -1) return ret; if (p1 == (int)e.size() - 1 && p2 == (int)f.size() - 1) return ret = 1; ret = 0; if (p1 != (int)e.size() - 1 && e[p1 + 1] != f[p2]) ret |= ans(p1 + 1, p2); if (p2 != (int)f.size() - 1 && e[p1] != f[p2 + 1]) ret |= ans(p1, p2 + 1); return ret; } int main () { int t = 1; cin >> t; while (t--) { cin >> n; for (int i = 1; i <= n; i++) adj[i].clear(); for (int i = 1; i < n; i++) { int a, b; cin >> a >> b; adj[a].push_back(b); adj[b].push_back(a); } cin >> m; int x, y; cin >> x >> y; dfs(x, -1, y); f = g; g.clear(); cin >> x >> y; dfs(x, -1, y); e = g; g.clear(); memset(dp, -1, sizeof(dp)); cout << (ans(0, 0) ? "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...