QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#439340#8575. Three Person Tree Gamereal_sigma_team#WA 18ms3664kbC++231.7kb2024-06-11 19:48:352024-06-11 19:48:37

Judging History

你现在查看的是最新测评结果

  • [2024-06-11 19:48:37]
  • 评测
  • 测评结果:WA
  • 用时:18ms
  • 内存:3664kb
  • [2024-06-11 19:48:35]
  • 提交

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'