#include<bits/stdc++.h>
using namespace std;
int n;
vector<int> adj[200001];
int lvl[200001], ans[200001];
int c;
void dfs1(int x) {
if(adj[x].empty()) {
c=min(lvl[x], c);
}
for(auto i:adj[x]) {
lvl[i]=lvl[x]+1;
dfs1(i);
}
}
void dfs2(int x, int cc) {
cc--;
cc=max(cc,1);
ans[x]=cc;
for(auto i:adj[x]) dfs2(i,cc);
}
int main() {
ios_base::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
cin>>n;
for(int i=2;i<=n;++i) {
int p;
cin>>p;
adj[p].push_back(i);
}
c=1e9;
lvl[1]=1;dfs1(1);
dfs2(1, c+1);
cout<<c<<"\n";
for(int i=1;i<=n;++i) cout<<ans[i]<<" \n"[i==n];
return 0;
}
Részfeladat | Összpont | Teszt | Verdikt | Idő | Memória | ||
---|---|---|---|---|---|---|---|
base | 50/50 | ||||||
1 | Elfogadva | 0/0 | 7ms | 11256 KiB | |||
2 | Elfogadva | 0/0 | 10ms | 11916 KiB | |||
3 | Elfogadva | 1/1 | 6ms | 11260 KiB | |||
4 | Elfogadva | 4/4 | 6ms | 11268 KiB | |||
5 | Elfogadva | 5/5 | 90ms | 47060 KiB | |||
6 | Elfogadva | 2/2 | 166ms | 25100 KiB | |||
7 | Elfogadva | 3/3 | 152ms | 26368 KiB | |||
8 | Elfogadva | 2/2 | 153ms | 27052 KiB | |||
9 | Elfogadva | 2/2 | 131ms | 27320 KiB | |||
10 | Elfogadva | 2/2 | 144ms | 29256 KiB | |||
11 | Elfogadva | 2/2 | 160ms | 32848 KiB | |||
12 | Elfogadva | 2/2 | 177ms | 35556 KiB | |||
13 | Elfogadva | 2/2 | 179ms | 37396 KiB | |||
14 | Elfogadva | 2/2 | 173ms | 38960 KiB | |||
15 | Elfogadva | 2/2 | 165ms | 40524 KiB | |||
16 | Elfogadva | 2/2 | 180ms | 41892 KiB | |||
17 | Elfogadva | 2/2 | 193ms | 43376 KiB | |||
18 | Elfogadva | 2/2 | 173ms | 44716 KiB | |||
19 | Elfogadva | 2/2 | 188ms | 46004 KiB | |||
20 | Elfogadva | 2/2 | 173ms | 47396 KiB | |||
21 | Elfogadva | 2/2 | 175ms | 48956 KiB | |||
22 | Elfogadva | 2/2 | 202ms | 50728 KiB | |||
23 | Elfogadva | 2/2 | 179ms | 55724 KiB | |||
24 | Elfogadva | 3/3 | 184ms | 61680 KiB |