8207 2024. 01. 12 19:12:47 CWM Színes fa cpp17 Elfogadva 50/50 223ms 28132 KiB
#include <iostream>
#include <vector>
#include <algorithm>
#include <queue>
#include <climits>

using namespace std;

//#define int long long

signed main()
{
	int n;
	cin >> n;
	vector<vector<int>> g(n);
	for (size_t i = 1; i < n; i++)
	{
		int a;
		cin >> a;
		a--;
		g[a].push_back(i);
		g[i].push_back(a);
	}
	vector<int> dist(n);
	queue<pair<int,int>> BFS;
	BFS.push({ 0,0 });
	while (!BFS.empty()) {
		pair<int, int> cur = BFS.front();
		dist[cur.first] = cur.second;
		BFS.pop();
		for (size_t i = 0; i < g[cur.first].size(); i++)
		{
			int val = g[cur.first][i];
			if (dist[val] == 0) {
				dist[val] = cur.second+1;
				BFS.push({ val,cur.second + 1 });
			}
		}
	}
	int minRes = INT_MAX;
	for (size_t i = 1; i < dist.size(); i++) {
		if (g[i].size() == 1) {
			minRes = min(dist[i], minRes);
		}
	}
	cout << minRes+1 << "\n";
	dist[0] = 0;
	for (size_t i = 0; i < dist.size(); i++)
	{
		cout << min(minRes+1, dist[i] + 1) << " ";
	}
}
Részfeladat Összpont Teszt Verdikt Idő Memória
base 50/50
1 Elfogadva 0/0 3ms 1812 KiB
2 Elfogadva 0/0 8ms 3140 KiB
3 Elfogadva 1/1 3ms 2096 KiB
4 Elfogadva 4/4 3ms 2288 KiB
5 Elfogadva 5/5 128ms 26064 KiB
6 Elfogadva 2/2 163ms 26284 KiB
7 Elfogadva 3/3 164ms 26496 KiB
8 Elfogadva 2/2 178ms 26720 KiB
9 Elfogadva 2/2 159ms 27352 KiB
10 Elfogadva 2/2 159ms 27756 KiB
11 Elfogadva 2/2 166ms 27608 KiB
12 Elfogadva 2/2 165ms 26916 KiB
13 Elfogadva 2/2 170ms 26912 KiB
14 Elfogadva 2/2 163ms 27104 KiB
15 Elfogadva 2/2 175ms 27052 KiB
16 Elfogadva 2/2 223ms 27048 KiB
17 Elfogadva 2/2 158ms 27272 KiB
18 Elfogadva 2/2 158ms 27356 KiB
19 Elfogadva 2/2 153ms 27572 KiB
20 Elfogadva 2/2 155ms 27476 KiB
21 Elfogadva 2/2 157ms 27556 KiB
22 Elfogadva 2/2 156ms 27820 KiB
23 Elfogadva 2/2 167ms 28080 KiB
24 Elfogadva 3/3 181ms 28132 KiB