QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#474200 | #6745. Delete the Tree | k1nsom | WA | 3ms | 13648kb | C++17 | 1.4kb | 2024-07-12 16:36:25 | 2024-07-12 16:36:25 |
Judging History
answer
#include <bits/stdc++.h>
using namespace std;
#define int long long
#define endl '\n'
#define N 200005
int n, k, m, tot, top, ctr = -1, si[N] = {0};
bool vis[N];
vector<int> e[N], ans[N];
void dfs(int u, int fa) // 找重心
{
si[u] = 1;
int mss = 0; // max subtree size
for (auto to : e[u])
if (!vis[to] && to != fa)
{
dfs(to, u);
if (ctr != -1)
return;
si[u] += si[to];
mss = max(mss, si[to]);
}
mss = max(mss, tot - si[u]);
if (mss <= tot / 2)
{
ctr = u;
si[fa] = tot - si[u];
}
}
void func(int u, int dis)
{
vis[u] = 1;
ans[dis].push_back(u);
top = max(top, dis);
for (auto to : e[u])
if (vis[to] == 0)
{
tot = si[to];
ctr = -1;
dfs(to, to);
dfs(ctr, ctr);
func(ctr, dis + 1);
}
}
signed main()
{
cin >> n;
for (int i = 1; i < n; i++)
{
int x, y;
cin >> x >> y;
e[x].push_back(y);
e[y].push_back(x);
}
tot = n;
ctr = -1;
dfs(1, 0);
dfs(ctr, ctr);
func(ctr, 1);
cout << top << endl;
for (int i = top; i >= 1; i--)
{
cout << ans[i].size() << ' ';
for (auto to : ans[i])
cout << to << ' ';
cout << endl;
}
return 0;
}
详细
Test #1:
score: 100
Accepted
time: 3ms
memory: 13360kb
input:
5 1 2 1 3 1 4 4 5
output:
3 1 5 3 2 3 4 1 1
result:
ok
Test #2:
score: 0
Accepted
time: 0ms
memory: 13648kb
input:
500 183 443 32 443 334 443 254 443 331 443 348 443 54 443 430 443 275 443 410 443 360 443 443 468 140 443 179 443 93 443 327 443 128 443 365 443 122 443 43 443 46 443 399 443 398 443 269 443 130 443 227 443 412 443 61 443 295 443 98 443 30 443 197 443 397 443 95 443 192 443 266 443 48 443 310 443 28...
output:
2 499 183 32 334 254 331 348 54 430 275 410 360 468 140 179 93 327 128 365 122 43 46 399 398 269 130 227 412 61 295 98 30 197 397 95 192 266 48 310 283 127 123 7 154 317 302 158 65 218 306 191 309 210 20 190 204 484 182 429 362 99 92 347 39 488 58 115 228 8 346 111 386 498 408 259 289 333 256 352 26...
result:
ok
Test #3:
score: -100
Wrong Answer
time: 2ms
memory: 13372kb
input:
500 80 180 80 254 1 180 80 337 180 323 80 248 180 205 80 189 180 480 80 330 180 454 80 498 142 180 80 193 180 346 80 89 180 389 80 125 180 232 80 93 180 228 80 327 180 357 80 417 180 362 80 278 180 316 80 312 163 180 80 310 176 180 80 463 180 210 80 478 180 294 80 185 124 180 80 143 180 339 80 253 1...
output:
5 1 -1 1 480 1 205 250 323 254 337 248 189 330 498 193 89 125 93 327 417 278 312 310 463 478 185 143 253 272 277 91 404 53 68 64 424 78 458 72 5 177 156 218 48 433 137 256 245 329 333 146 131 391 94 237 413 406 65 431 441 233 377 168 118 242 298 259 285 35 63 336 344 260 483 494 465 428 386 313 1...
result:
wrong answer Integer -1 violates the range [1, 500]