82052024-01-12 19:03:47CWMSzínes facpp17Wrong answer 0/50197ms27924 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 = 0; i < n-1; 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();
		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 << "\n";
	dist[0] = 0;
	for (size_t i = 0; i < dist.size(); i++)
	{
		cout << min(minRes, dist[i] + 1) << " ";
	}
}
SubtaskSumTestVerdictTimeMemory
base0/50
1Accepted0/03ms1936 KiB
2Wrong answer0/08ms3252 KiB
3Wrong answer0/13ms2100 KiB
4Wrong answer0/43ms2288 KiB
5Wrong answer0/5119ms25816 KiB
6Wrong answer0/2165ms25884 KiB
7Wrong answer0/3158ms25884 KiB
8Wrong answer0/2155ms26140 KiB
9Wrong answer0/2149ms26556 KiB
10Wrong answer0/2149ms26528 KiB
11Wrong answer0/2163ms26436 KiB
12Wrong answer0/2163ms26664 KiB
13Wrong answer0/2152ms26624 KiB
14Wrong answer0/2149ms26864 KiB
15Wrong answer0/2140ms27120 KiB
16Wrong answer0/2157ms27160 KiB
17Wrong answer0/2197ms27028 KiB
18Wrong answer0/2153ms27284 KiB
19Wrong answer0/2172ms27496 KiB
20Wrong answer0/2173ms27864 KiB
21Wrong answer0/2155ms27668 KiB
22Wrong answer0/2151ms27668 KiB
23Wrong answer0/2166ms27924 KiB
24Wrong answer0/3152ms27880 KiB