82062024-01-12 19:08:29CWMSzínes facpp17Hibás válasz 0/50180ms27472 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();
		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
base0/50
1Hibás válasz0/03ms1816 KiB
2Hibás válasz0/08ms2992 KiB
3Hibás válasz0/13ms2372 KiB
4Hibás válasz0/43ms2540 KiB
5Hibás válasz0/5119ms25808 KiB
6Hibás válasz0/2180ms26064 KiB
7Hibás válasz0/3153ms26104 KiB
8Hibás válasz0/2142ms26168 KiB
9Hibás válasz0/2145ms26596 KiB
10Hibás válasz0/2150ms26668 KiB
11Hibás válasz0/2171ms26628 KiB
12Hibás válasz0/2163ms26856 KiB
13Hibás válasz0/2150ms26724 KiB
14Hibás válasz0/2140ms26720 KiB
15Hibás válasz0/2172ms26848 KiB
16Hibás válasz0/2166ms26856 KiB
17Hibás válasz0/2153ms26792 KiB
18Hibás válasz0/2143ms26796 KiB
19Hibás válasz0/2173ms26920 KiB
20Hibás válasz0/2177ms27088 KiB
21Hibás válasz0/2158ms27300 KiB
22Hibás válasz0/2171ms27472 KiB
23Hibás válasz0/2150ms27412 KiB
24Hibás válasz0/3143ms27412 KiB