QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#234547 | #6638. Treelection | ugly2333 | WA | 87ms | 10420kb | C++20 | 640b | 2023-11-01 19:04:59 | 2023-11-01 19:04:59 |
Judging History
answer
//Δ_H
#include<bits/stdc++.h>
using namespace std;
typedef long long LL;
typedef double DB;
const int N = 1111111;
int n,p[N],t[N],a[N],f[N];
int main(){
int T,i,l,r,h;
scanf("%d",&T);
while(T--){
scanf("%d",&n);
for(i=2;i<=n;i++)
scanf("%d",p+i);
for(i=1;i<=n;i++)
t[i]=1,a[i]=0;
for(i=n;i>=2;i--)
t[p[i]]+=t[i],a[p[i]]++;
l=0,r=n;
while(l<r){
h=l+r>>1;
for(i=1;i<=n;i++)
f[i]=a[i]-h;
for(i=n;i>=2;i--)
if(f[i]>0)
f[p[i]]+=f[i];
if(f[1]>=0)
l=h+1;
else
r=h;
}
for(i=1;i<=n;i++)
printf("%d",t[i]-1>=l);
printf("\n");
}
return 0;
}
Details
Tip: Click on the bar to expand more detailed information
Test #1:
score: 100
Accepted
time: 1ms
memory: 10120kb
input:
2 4 1 2 3 5 1 1 2 2
output:
1100 10000
result:
ok 2 lines
Test #2:
score: -100
Wrong Answer
time: 87ms
memory: 10420kb
input:
10 100000 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 10...
output:
111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111...
result:
wrong answer 1st lines differ - expected: '111111111111111111111111111111...0000000000000000000000000000000', found: '111111111111111111111111111111...0000000000000000000000000000000'