❤ • 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;
}
评论:
请先登录,才能进行评论