6462 2023. 12. 02 16:30:17 horvathabel Színes fa cpp17 Elfogadva 50/50 195ms 59308 KiB
#include <bits/stdc++.h>
using namespace std;
vector<int> g[200001];
vector<int> tav;
vector<bool> vangyereke;
int bfsminmely(){
    queue<int> q;
    int mntav=20000001;
    tav[1]=1;
    q.push(1);
    while (!q.empty()){
        int v=q.front();
        q.pop();
        for (int edge:g[v]){
            tav[edge]=tav[v]+1;
            q.push(edge);
        }
        if(!vangyereke[v]) mntav=min(mntav,tav[v]);
    }
    return mntav;
}
vector<int> color;
void dfs(int x,int clm){
    color[x]=clm;
    if (clm>1) clm--;
    for (int edge:g[x]) dfs(edge,clm);
}
int main()
{
    int n;
    cin>>n;
    tav.resize(n+1,0);
    color.resize(n+1,-1);
    vangyereke.resize(n+1,false);
    for (int i=2; i<=n;i++){
        int p;
        cin>>p;
        g[p].push_back(i);
        vangyereke[p]=true;
    }
    int colordb=bfsminmely();
    cout<<colordb<<endl;
    dfs(1,colordb);
    for (int i=1; i<=n;i++) cout<<color[i]<<" ";
}
Részfeladat Összpont Teszt Verdikt Idő Memória
base 50/50
1 Elfogadva 0/0 6ms 11236 KiB
2 Elfogadva 0/0 10ms 12224 KiB
3 Elfogadva 1/1 7ms 11856 KiB
4 Elfogadva 4/4 6ms 11780 KiB
5 Elfogadva 5/5 120ms 37968 KiB
6 Elfogadva 2/2 142ms 25804 KiB
7 Elfogadva 3/3 140ms 27132 KiB
8 Elfogadva 2/2 167ms 28096 KiB
9 Elfogadva 2/2 142ms 28984 KiB
10 Elfogadva 2/2 145ms 31072 KiB
11 Elfogadva 2/2 144ms 34968 KiB
12 Elfogadva 2/2 152ms 37368 KiB
13 Elfogadva 2/2 156ms 39160 KiB
14 Elfogadva 2/2 177ms 40552 KiB
15 Elfogadva 2/2 173ms 42456 KiB
16 Elfogadva 2/2 179ms 43976 KiB
17 Elfogadva 2/2 179ms 45464 KiB
18 Elfogadva 2/2 178ms 46844 KiB
19 Elfogadva 2/2 164ms 48252 KiB
20 Elfogadva 2/2 178ms 49492 KiB
21 Elfogadva 2/2 177ms 51116 KiB
22 Elfogadva 2/2 179ms 52368 KiB
23 Elfogadva 2/2 195ms 55700 KiB
24 Elfogadva 3/3 172ms 59308 KiB