238372026-01-30 16:11:17KristófSzínes facpp17Elfogadva 50/50266ms30516 KiB
#include <iostream>
#include <vector>
#include <climits>
using namespace std;
int szincnt=INT_MAX;
vector<vector<int>> adj;
vector<int> child;
vector<int> ancestor;
vector<int> color;
void dfs(int s,int p)
{
ancestor[s]=ancestor[p]+1;
for(auto x:adj[s])
    {
    dfs(x,s);
    child[s]+=child[x]+1;
    }
szincnt=min(szincnt,child[s]+ancestor[s]);
//cout<<szincnt<<" "<<s<<"\n";
}
void dfs2(int s,int p)
{
if(color[p]+1<=szincnt)
    {
    color[s]=color[p]+1;
    }
else color[s]=1;
for(auto x:adj[s])dfs2(x,s);
}

int main()
{
    int n;
    cin>>n;
    int x;
    adj.resize(n+1);
    child.resize(n+1,0);
    ancestor.resize(n+1,0);
    color.resize(n+1,0);
    for(int i=1;i<n;i++)
        {
        cin>>x;
        adj[x].push_back(i+1);
        }
    dfs(1,1);
    cout<<szincnt<<"\n";
    dfs2(1,1);
    for(int i=1;i<=n;i++)cout<<color[i]<<" ";
    return 0;
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
base50/50
1Elfogadva0/01ms316 KiB
2Elfogadva0/07ms820 KiB
3Elfogadva1/11ms316 KiB
4Elfogadva4/41ms316 KiB
5Elfogadva5/5142ms30516 KiB
6Elfogadva2/2175ms11824 KiB
7Elfogadva3/3231ms11828 KiB
8Elfogadva2/2172ms11572 KiB
9Elfogadva2/2187ms11060 KiB
10Elfogadva2/2158ms11244 KiB
11Elfogadva2/2186ms12592 KiB
12Elfogadva2/2201ms13364 KiB
13Elfogadva2/2201ms13616 KiB
14Elfogadva2/2247ms13876 KiB
15Elfogadva2/2254ms14140 KiB
16Elfogadva2/2209ms14132 KiB
17Elfogadva2/2254ms14380 KiB
18Elfogadva2/2257ms14388 KiB
19Elfogadva2/2212ms14388 KiB
20Elfogadva2/2252ms14648 KiB
21Elfogadva2/2228ms14900 KiB
22Elfogadva2/2252ms15412 KiB
23Elfogadva2/2221ms18740 KiB
24Elfogadva3/3266ms22580 KiB