#include<bits/stdc++.h>
using namespace std;
const int maxn=510;
int rd[maxn],ans[maxn];
vector<int> a[maxn];
priority_queue<int ,vector<int>,greater<int> > q;
int main(){
int n,m;
while(cin>>n>>m){
for(int i=1;i<=n;i++)a[i].clear();
memset(rd,0,sizeof(rd));
for(int i=1;i<=m;i++){
int x,y; scanf("%d%d",&x,&y);
a[x].push_back(y); rd[y]++;
}
for(int i=1;i<=n;i++)if(rd[i]==0)q.push(i);
int cnt=0;
while(!q.empty()){
int k=q.top(); q.pop();
ans[++cnt]=k;
for(int i=0;i<a[k].size();i++){
rd[a[k][i]]--;
if(rd[a[k][i]]==0)q.push(a[k][i]);
}
}
for(int i=1;i<=cnt;i++)printf("%d%c",ans[i],i==n?'\n':' ');
}
return 0;
}
HDU1285拓扑排序模板题
最新推荐文章于 2025-01-18 21:23:11 发布
本文详细探讨了HDU1285题目中拓扑排序的应用,提供了清晰的拓扑排序模板,并附带C++代码实现,帮助读者理解和掌握图论中的这一重要算法。

3950

被折叠的 条评论
为什么被折叠?



