📄 1285.cpp
字号:
#include<iostream>
#include<queue>
#include<vector>
using namespace std;
bool map[510][510],visit[510];
int degree[510],ans[510];
void Tpsort(int n){//拓扑排序
int i,j,c;
priority_queue<int,vector<int>,greater<int> > S;
for(i=1;i<=n;i++)
if(degree[i]==0){
visit[i]=true;
S.push(i);
}
i=0;
while(!S.empty()){
c=S.top();
S.pop();
ans[++i]=c;
for(j=1;j<=n;j++)
if(visit[j]==false&&map[c][j]==true)
if(--degree[j]==0){
S.push(j);
visit[j]=true;
}
if(i==n)
return;
}
}
void main()
{
int n,m,a,b,i;
while(cin>>n>>m){
memset(map,0,sizeof(map));
memset(visit,0,sizeof(visit));
memset(degree,0,sizeof(degree));
memset(ans,0,sizeof(ans));
for(i=1;i<=m;i++){
cin>>a>>b;
if(!map[a][b]){//注意拒绝重复
map[a][b]=true;
degree[b]++;
}
}
Tpsort(n);
for(i=1;i<=n;i++){
cout<<ans[i];
if(i==n)
cout<<endl;
else
cout<<" ";
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -