QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#820562#9713. Kill the treeLoxilanteWA 207ms36188kbC++201.5kb2024-12-18 21:50:112024-12-18 21:50:12

Judging History

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

  • [2024-12-18 21:50:12]
  • 评测
  • 测评结果:WA
  • 用时:207ms
  • 内存:36188kb
  • [2024-12-18 21:50:11]
  • 提交

answer

#include <bits/stdc++.h>
#define rep(i, l, r) for(int i = l; i < r; i++)
#define hrp(i, l, r) for(int i = l; i <= r; i++)
#define rev(i, r, l) for(int i = r; i >= l; i--)
#define int ll
using namespace std;
typedef long long ll;
template<typename tn = int> tn next(void) { tn k; cin>>k; return k; }
#ifndef LOCAL
#define D(...) 0
#define I(...) 0
#endif
const int U = 7e5;
int cen[U], mxs[U], siz[U], fa[U];
vector<int> edge[U];
bool chkmin(int&a, int b) { return a > b ? a = b, 1 : 0; }
void dfs(int e, int f)
{
    siz[e] = 1; cen[e] = e; fa[e] = f;

    for(auto y: edge[e]) if (y != f) dfs(y, e), mxs[e] = max(mxs[e], siz[y]), siz[e] += siz[y];

    for(auto y: edge[e]) if (y != f)
    {
        int now = cen[y];
        while(now != e)
        {
            if (max(mxs[now], siz[e]-siz[now]) <= siz[e]/2) { cen[e] = now; break; }
            else now = fa[now];
        }
    }
}
signed main(void)
{
    #ifdef LOCAL
//	freopen("C:\\Users\\Loxil\\Desktop\\IN.txt", "r", stdin);
//	freopen("C:\\Users\\Loxil\\Desktop\\OUT.txt", "w", stdout);
    #endif
    
    ios::sync_with_stdio(false);
    cin.tie(0);
    
    int n;
    cin>>n;
    rep(i, 1, n) { int f, t; cin>>f>>t; edge[f].push_back(t); edge[t].push_back(f); }

    dfs(1, 0);

    hrp(i, 1, n)
    {
        int a = cen[i], b = fa[cen[i]] && max(mxs[fa[cen[i]]], siz[i]-siz[fa[cen[i]]]) <= siz[i]/2 ? fa[cen[i]] : 0;
        cout<<a<<(b ? b : ' ')<<endl;
    }
    
    return 0;
}
/*

 */

详细

Test #1:

score: 0
Wrong Answer
time: 207ms
memory: 36188kb

input:

200000
42924 18271
60536 154257
107175 95680
196335 71607
158051 155259
110869 30974
143595 43516
4228 138046
26249 183847
123888 199873
15009 25362
166527 175160
15257 67159
124779 199363
148904 54047
5988 18123
58281 40739
44562 143880
72819 132492
137782 29662
130741 78276
55073 93292
82700 18328...

output:

1343851
14367045886
126220106649
10839344121
953135226
116080147311
14118032
14798332
742874120
16196332
387932
17849932
162544171549
14441332
12726232
188325133093
17180232
4355832
2817932
125217140604
18665132
17639745633
2642532
269823745
3006332
12896532
14803619661
14173332
11569132
349132
8560...

result:

wrong answer 1st numbers differ - expected: '1', found: '1343851'