QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#875710 | #9678. 网友小 Z 的树 | Tianyiwei | 0 | 0ms | 16440kb | C++14 | 1.9kb | 2025-01-30 10:20:24 | 2025-01-30 10:20:26 |
Judging History
answer
#include "diameter.h"
#include <bits/stdc++.h>
using namespace std;
const int N = 3e5 + 10;
int d[N], vis[N]; vector<int> node;
int StepOne(int n) {
node.clear(); int mnd = 1e9;
for (int i = 3; i <= n; i++) {
d[i] = query(1, 2, i) / 2;
if (d[i] < mnd) {
node.clear();
mnd = d[i];
}
if (d[i] == mnd) node.emplace_back(i);
}
for (int i = 1; i <= n; i++) vis[i] = 0;
vis[1] = 1;
if (mnd == 2 && in(2, 1, node.front())) return 2;
int dist = node.size();
for (int v : node) vis[v] = 1;
for (int i = 0; i < dist; i += 2) {
if (i == dist - 1) return node[i];
if (query(node[i], node[i + 1], 2) / 2 == dist) {
if (in(node[i], 1, node[i + 1])) return node[i];
else return node[i + 1];
}
}
}
std::pair<int, int> find_diameter(int subid, int n) {
if (n == 1) return {1, 1};
if (n == 2) return {1, 2};
int x = StepOne(n);
int s = 0, vl = -1;
for (int i = 1; i <= n; i++) {
if (i == 1) d[i] = 0;
else if (i == x) d[i] = 0;
else if (vis[i]) d[i] = -1;
else d[i] = query(1, x, i) / 2 - 1;
if (d[i] > vl) {
vl = d[i];
s = i;
}
}
int BS = 1, BT = x;
if (in(x, 1, s)) swap(BS, BT);
int t = 0, val = -1;
auto upd = [&] (int u, int v) {
if (v > val) t = u, val = v;
};
for (int i = 1; i <= n; i++) {
if (i == BS) upd(i, d[s]);// d[s]
else if (i == BT) upd(i, d[s] + 1); // d[s] + 1
else if (i == s) upd(i, 0); // 0
else if (vis[i]) continue;
else {
int dsi = query(BS, s, i) / 2;
if (dsi == d[s] + d[i] + 1) upd(i, dsi);
else upd(i, 2 * dsi - d[s] - d[i]); // 2 * dsi - d[s] - d[i]
}
}
for (int i = 1; i <= n; i++) vis[i] = d[i] = 0;
node.clear();
return {s, t};
}
详细
Subtask #1:
score: 0
Wrong Answer
Test #1:
score: 0
Wrong Answer
time: 0ms
memory: 16440kb
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:
WA
result:
wrong answer Wrong Answer
Subtask #2:
score: 0
Skipped
Dependency #1:
0%
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:
0%