QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#868262#9678. 网友小 Z 的树wsyear16 19ms12228kbC++201.6kb2025-01-24 15:20:252025-01-24 15:20:25

Judging History

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

  • [2025-01-24 15:20:25]
  • 评测
  • 测评结果:16
  • 用时:19ms
  • 内存:12228kb
  • [2025-01-24 15:20:25]
  • 提交

answer

#include "diameter.h"
#include <bits/stdc++.h>

#define rep(i, j, k) for (int i = (j); i <= (k); ++i)
#define per(i, j, k) for (int i = (j); i >= (k); --i)
#define SZ(v) int((v).size())
#define ALL(v) (v).begin(),(v).end()
#define fi first
#define se second
using ll = long long;
using pii = std::pair<int, int>;
using pll = std::pair<ll, ll>;

template<class T> void chkmn(T &x, T y) { if (y < x) x = y; }
template<class T> void chkmx(T &x, T y) { if (y > x) x = y; }

using namespace std;

const int maxn = 100010;

int val[maxn];

pii find_diameter(int sid, int n) {
  if (n == 1) return pii(1, 1);
  if (n == 2) return pii(1, 2);
  if (n == 3) {
    if (in(1, 2, 3)) return pii(2, 3);
    if (in(2, 1, 3)) return pii(1, 3);
    return pii(1, 2);
  }
  int x = 1, y = 2, z = 3, mx = query(x, y, z);
  rep (i, 1, n) if (i != y && i != z) {
    int cur = query(i, y, z);
    if (cur > mx) mx = cur, x = i;
  }
  rep (i, 1, n) if (i != x && i != z) {
    int cur = query(i, x, z);
    if (cur > mx) mx = cur, y = i;
  }
  int mn = 1e9, t = 0;
  rep (i, 1, n) if (i != x && i != y) {
    int cur = query(i, x, y);
    if (cur > mx) mx = cur, z = i;
    if (cur <= mn) mn = cur, t = i;
    val[i] = cur;
  }
  if (val[z] == mn) return pii(x, y);
  if (in(y, x, z)) return pii(x, z);
  int disxy = mn, disxz, disyz;
  if (in(t, x, z)) disxz = query(x, t, z), disyz = 2 * mx - disxy - disxz;
  else disyz = query(y, t, z), disxz = 2 * mx - disxy - disyz;
  int res = max({disxy, disxz, disyz});
  if (disxy == res) return pii(x, y);
  if (disxz == res) return pii(x, z);
  return pii(y, z);
}

Details

Tip: Click on the bar to expand more detailed information

Subtask #1:

score: 16
Accepted

Test #1:

score: 16
Accepted
time: 3ms
memory: 12228kb

input:

1 100
25
1 3
2 18
3 8
4 18
5 14
6 22
7 18
8 10
9 11
10 12
11 25
12 16
13 11
14 17
15 17
16 25
17 2
18 20
19 18
20 12
21 1
22 17
23 14
24 1
50
1 37
2 27
3 10
4 25
5 16
6 17
7 10
8 36
9 16
10 6
11 48
12 2
13 28
14 30
15 10
16 44
17 31
18 1
19 6
20 7
21 30
22 42
23 45
24 23
25 27
26 39
27 45
28 48
29 4...

output:

correct

result:

ok Correct

Subtask #2:

score: 0
Wrong Answer

Dependency #1:

100%
Accepted

Test #2:

score: 0
Wrong Answer
time: 19ms
memory: 11860kb

input:

2 2006
42
1 32
2 4
3 6
4 29
5 1
6 42
7 10
8 16
9 6
10 25
11 42
12 8
13 36
14 8
15 17
16 3
17 6
18 21
19 23
20 31
21 42
22 6
23 32
24 7
25 27
26 34
27 31
28 6
29 41
30 20
31 9
32 7
33 3
34 5
35 5
36 1
37 8
38 14
39 15
40 12
41 22
95
1 94
2 88
3 13
4 71
5 37
6 45
7 87
8 24
9 76
10 54
11 69
12 95
13 90...

output:

WA

result:

wrong answer Wrong Answer

Subtask #3:

score: 0
Skipped

Dependency #2:

0%

Subtask #4:

score: 0
Skipped

Dependency #3:

0%

Subtask #5:

score: 0
Skipped

Dependency #4:

0%

Subtask #6:

score: 0
Skipped

Dependency #5:

0%

Subtask #7:

score: 0
Skipped

Dependency #6:

0%

Subtask #8:

score: 0
Skipped

Dependency #7:

0%

Subtask #9:

score: 0
Skipped

Dependency #8:

0%

Subtask #10:

score: 0
Skipped

Dependency #9:

0%

Subtask #11:

score: 0
Skipped

Dependency #1:

100%
Accepted

Dependency #2:

0%