QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#474200#6745. Delete the Treek1nsomWA 3ms13648kbC++171.4kb2024-07-12 16:36:252024-07-12 16:36:25

Judging History

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

  • [2024-07-12 16:36:25]
  • 评测
  • 测评结果:WA
  • 用时:3ms
  • 内存:13648kb
  • [2024-07-12 16:36:25]
  • 提交

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;
}

Details

Tip: Click on the bar to expand more detailed information

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]