82072024-01-12 19:12:47CWMSzínes facpp17Elfogadva 50/50223ms28132 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ÖsszpontTesztVerdiktIdőMemória
base50/50
1Elfogadva0/03ms1812 KiB
2Elfogadva0/08ms3140 KiB
3Elfogadva1/13ms2096 KiB
4Elfogadva4/43ms2288 KiB
5Elfogadva5/5128ms26064 KiB
6Elfogadva2/2163ms26284 KiB
7Elfogadva3/3164ms26496 KiB
8Elfogadva2/2178ms26720 KiB
9Elfogadva2/2159ms27352 KiB
10Elfogadva2/2159ms27756 KiB
11Elfogadva2/2166ms27608 KiB
12Elfogadva2/2165ms26916 KiB
13Elfogadva2/2170ms26912 KiB
14Elfogadva2/2163ms27104 KiB
15Elfogadva2/2175ms27052 KiB
16Elfogadva2/2223ms27048 KiB
17Elfogadva2/2158ms27272 KiB
18Elfogadva2/2158ms27356 KiB
19Elfogadva2/2153ms27572 KiB
20Elfogadva2/2155ms27476 KiB
21Elfogadva2/2157ms27556 KiB
22Elfogadva2/2156ms27820 KiB
23Elfogadva2/2167ms28080 KiB
24Elfogadva3/3181ms28132 KiB