ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#212835 | #3829. C | tommy | 0 | 169ms | 57748kb | C++11 | 1.2kb | 2024-10-20 11:58:27 | 2024-10-20 12:47:13 |
answer
#include <bits/stdc++.h>
using namespace std;
int n;
const int N = 1e6 + 10;
vector<int> a[N];
int dep[N], vis[N];
struct Node {
int root, siz;
};
vector<Node> so[N];
int siz[N];
bool cmp(Node x, Node y) {
return x.siz > y.siz;
}
void dfs1(int x) {
vis[x] = 1;
for(int v : a[x]) {
if(vis[x]) continue;
dep[v] = dep[x] + 1;
dfs1(v);
siz[x] += siz[v] + 1;
}
}
int f[N];
void dfs2(int x) {
vis[x] = 1;
int all = 0;
for(int v : a[x]) {
if(vis[v]) continue;
dfs2(v);
so[x].push_back({v, f[v]});
all += f[v] + 1;
}
if(so[x].size() == 0) f[x] = dep[x];
else {
sort(so[x].begin(), so[x].end(), cmp);
int minn = 0x7fffffff;
int left = 0;
for(int i = 1; i < so[x].size(); i++) {
left += so[x][i].siz;
minn = min(minn, 2 * (all - left) + left + i * dep[x]);
}
f[x] = minn;
}
}
int main() {
scanf("%d", &n);
for(int i = 1; i < n; i++) {
int u, v;
scanf("%d%d", &u, &v);
a[u].push_back(v);
a[v].push_back(u);
}
dfs1(1);
memset(vis, 0, sizeof(vis));
dfs2(1);
printf("%d\n", f[1]);
}
详细
小提示:点击横条可展开更详细的信息
Subtask #1:
score: 0
Wrong Answer
Test #1:
score: 0
Wrong Answer
time: 16ms
memory: 52032kb
input:
5 3 1 1 5 2 4 5 4
output:
2
result:
wrong answer 1st numbers differ - expected: '4', found: '2'
Subtask #2:
score: 0
Wrong Answer
Test #4:
score: 0
Wrong Answer
time: 16ms
memory: 52040kb
input:
100 63 38 17 33 44 12 9 66 21 98 2 49 68 67 75 42 78 25 92 6 67 17 90 19 48 51 83 9 20 94 68 4 64 58...
output:
2147483647
result:
wrong answer 1st numbers differ - expected: '167', found: '2147483647'
Subtask #3:
score: 0
Wrong Answer
Test #10:
score: 0
Wrong Answer
time: 22ms
memory: 52092kb
input:
1000 228 978 939 994 911 13 8 806 680 958 779 832 673 924 627 806 354 476 320 218 766 848 171 944 90...
output:
2147483647
result:
wrong answer 1st numbers differ - expected: '1893', found: '2147483647'
Subtask #4:
score: 0
Wrong Answer
Test #16:
score: 0
Wrong Answer
time: 115ms
memory: 57748kb
input:
100000 44881 88880 79640 18741 56510 31493 27649 50461 7015 98523 26337 91384 17594 52397 37312 3409...
output:
10
result:
wrong answer 1st numbers differ - expected: '199052', found: '10'
Subtask #5:
score: 0
Time Limit Exceeded
Test #22:
score: 0
Time Limit Exceeded
input:
1000000 198444 939986 569807 470692 847908 557044 739959 80274 772656 222835 832266 382872 267873 10...