AC

 •  18天前


#include <bits/stdc++.h>
using namespace std;

const int MAXN = 100005;
vector<int> p[MAXN];
int res[MAXN]={0};
bool vis[MAXN]={0};


void dfs(int u, int val) {
	res[u] = val;
	vis[u] = 1;
	for (int v : p[u]) {
		if (!vis[v]) {
			dfs(v, val);
		}
	}
}

int main() {


	int N, M;
	cin >> N >> M;

	for (int i = 0; i < M; i++) {
		int u, v;
		cin >> u >> v;

		p[v].push_back(u);
	}
	for (int i = N; i >= 1; i--) {
		if (!vis[i]) {

			dfs(i, i);
		}
	}


	for (int i = 1; i <= N; i++) {
		cout << res[i] << " ";
	}

	return 0;
}


评论:

请先登录,才能进行评论