QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#439340 | #8575. Three Person Tree Game | real_sigma_team# | WA | 18ms | 3664kb | C++23 | 1.7kb | 2024-06-11 19:48:35 | 2024-06-11 19:48:37 |
Judging History
answer
#include <bits/stdc++.h>
using namespace std;
signed main() {
cin.tie(nullptr)->sync_with_stdio(false);
int t = 1;
cin >> t;
while (t--) {
int n, a, b, c;
cin >> n >> a >> b >> c;
--a, --b, --c;
vector<vector<int>> gr(n);
for (int i = 1, u, v; i < n; ++i) {
cin >> u >> v;
--u, --v;
gr[u].push_back(v);
gr[v].push_back(u);
}
bool f = false;
for (int i : gr[a])
if (i == c) {
cout << 'A' << '\n';
f = true;
}
if (f)
continue;
vector<int> dist(n), par(n);
auto dfs = [&](auto self, int v, int p, int d) -> void {
dist[v] = d;
par[v] = p;
for (int u: gr[v])
if (u != p)
self(self, u, v, d + 1);
};
dfs(dfs, a, a, 0);
int lb = b, lc = c;
while (lb != lc) {
if (dist[lb] < dist[lc])
lc = par[lc];
else
lb = par[lb];
}
int l = lb;
dfs(dfs, l, l, 0);
int da = dist[a], db = dist[b], dc = dist[c];
bool aw = false, bw = false, cw = false;
if (da < db && da + 1 <= dc)
aw = true;
if (db <= da && db < dc)
bw = true;
if (dc < da && dc < db)
cw = true;
assert(aw + bw + cw <= 1);
if (aw)
cout << 'A';
else if (bw)
cout << 'B';
else if (cw)
cout << 'C';
else
cout << "DRAW";
cout << '\n';
}
}
Details
Tip: Click on the bar to expand more detailed information
Test #1:
score: 100
Accepted
time: 0ms
memory: 3552kb
input:
2 3 1 2 3 2 1 3 1 4 1 2 3 1 4 2 4 3 4
output:
A DRAW
result:
ok 2 lines
Test #2:
score: -100
Wrong Answer
time: 18ms
memory: 3664kb
input:
10000 20 2 12 1 16 15 3 2 16 17 14 13 11 12 9 8 10 9 18 17 6 5 18 19 13 12 5 4 7 6 20 19 14 15 3 4 11 10 1 2 8 7 20 12 13 1 18 13 12 11 19 15 17 16 10 14 4 2 15 11 6 5 3 2 4 13 20 8 11 9 3 7 14 16 5 8 5 4 9 6 10 3 1 2 17 2 17 15 9 10 5 4 9 8 2 11 6 7 8 7 13 4 2 3 6 15 5 6 17 8 2 1 3 4 16 7 14 5 3 12...
output:
A B C B DRAW C A A A DRAW C B B B DRAW A DRAW DRAW C DRAW A B A DRAW A B B B C A A A B B DRAW C DRAW A A A A A B B A C DRAW A B A B DRAW A DRAW DRAW A B C C DRAW A A A DRAW DRAW B B B A DRAW B B A A DRAW B A A B DRAW A B C C DRAW A B A A A B B B A A B B A C DRAW B DRAW B A A A C A A DRAW A A C A DRA...
result:
wrong answer 18th lines differ - expected: 'A', found: 'DRAW'