#include <bits/stdc++.h>
using namespace std;
int n, m;
int a[101][101], d[101];
void topo(){
for(int i = 1; i <= m; i++){
for(int j = 1; j <= m; j++){
if(!d[j]){
d[j]--;
printf("%d ", j);
for(int k = 1; k <= m; k++){
if(a[j][k] == 1) d[k]--;
}
break;
}
}
}
}
int main(){
while(scanf("%d%d", &n, &m) == 2){
memset(d, 0, sizeof(d));
memset(a, 0, sizeof(a));
for(int i = 0; i < n; i++){
int x, y;
scanf("%d%d", &x, &y);
if(!a[x][y]){
a[x][y] = 1;
d[y]++;
}
}
topo();
}
}
/*
6 6
1 2
2 3
2 4
5 2
5 4
4 6
*/
个人模板【拓扑排序】
最新推荐文章于 2025-04-29 20:10:15 发布