QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#388775 | #6745. Delete the Tree | k1nsom | WA | 5ms | 13048kb | C++17 | 1.7kb | 2024-04-13 19:35:42 | 2024-04-13 19:35:43 |
Judging History
answer
#include <bits/stdc++.h>
using namespace std;
#define int long long
#define N 200005
#define endl '\n'
int n, ctr = -1, cnt = 0, tot, si[N] = {0};
bool del[N], vis[N];
vector<int> e[N], ans[N];
void dfs(int u, int fa = 0)
{
si[u] = 1;
int mss = 0;
for (auto to : e[u])
if (!del[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 dfs2(int u, int fa)
{
bool check = 0;
for (auto to : e[u])
if (!del[to] && to != fa)
{
check = 1;
dfs2(to, u);
}
if (!check)
{
ans[cnt].push_back(u);
del[u] = 1;
}
}
void func(int u)
{
cnt++;
for (auto to : e[u])
if (!del[to])
{
dfs2(to, u);
}
del[u] = 1;
for (auto to : e[u])
if (!del[to])
{
tot = si[to];
ctr = -1;
dfs(to);
func(ctr);
}
ans[cnt].push_back(u);
cnt++;
}
signed main()
{
cin >> n;
for (int i = 1; i < n; i++)
{
int u, v;
cin >> u >> v;
e[u].push_back(v);
e[v].push_back(u);
}
tot = n;
ctr = -1;
dfs(1);
func(ctr);
cnt--;
cout << cnt << endl;
for (int i = 1; i <= cnt; cout << endl, i++)
{
cout << ans[i].size() << ' ';
for (auto v : ans[i])
cout << v << ' ';
}
return 0;
}
Details
Tip: Click on the bar to expand more detailed information
Test #1:
score: 100
Accepted
time: 0ms
memory: 13020kb
input:
5 1 2 1 3 1 4 4 5
output:
3 3 2 3 5 1 4 1 1
result:
ok
Test #2:
score: -100
Wrong Answer
time: 5ms
memory: 13048kb
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:
1 500 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:
wrong answer