Submission #1366728

#TimeUsernameProblemLanguageResultExecution timeMemory
1366728uranhishigCurrents (EGOI25_currents)C++20
27 / 100
174 ms27408 KiB
#include <bits/stdc++.h>
using namespace std;
#define int long long


const int maxn = 2e5 + 5;
vector<int> adj[maxn];
vector<int> radj[maxn];

signed main(){
	int n, m;
	cin >> n >> m;
	bool bb = true;
	for (int i = 0; i < m; i++) {
		int u, v;
		cin >> u >> v;
		if(u + 1 != v) bb = false;
		adj[u].push_back(v);
		radj[v].push_back(u);
	}
	if(m == n - 1 and bb) {
		vector<int> dp(n);
		dp[n - 1] = 0;
		for (int i = n - 2; i >= 0; i--) {
			dp[i] = max(i, dp[i + 1] + 1);
		}
		for (int i = 0; i < n-1; i++) cout << dp[i] << ' ';
		return 0;
	}
	
	queue<int> q;
	vector<int> dist(maxn, 1e18);
	dist[0] = 0;
	q.push(0);
	while(!q.empty()) {
		int u = q.front();
		q.pop();
		for (int v: adj[u]) {
			if(dist[v] == 1e18) {
				dist[v] = dist[u] + 1;
				q.push(v);
			}
		}
	}
	for (int i = 0; i < n-1; i++) {
		cout << max(1LL, dist[i]) << ' ';
	}
}
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...