Cod sursa(job #2680811)
| Utilizator | Data | 4 decembrie 2020 14:04:53 | |
|---|---|---|---|
| Problema | Sortare topologica | Scor | 0 |
| Compilator | cpp-64 | Status | done |
| Runda | Arhiva educationala | Marime | 0.63 kb |
#include<fstream>
#include<vector>
using namespace std;
ifstream cin("sortaret.in");
ofstream cout("sortaret.out");
vector<int>v[50001];
int grad[50001],q[100001],k=1;
int main () {
int n,m,x,y;
cin>>n>>m;
for(int i=1;i<=m;i++){
cin>>x>>y;
v[x].push_back(y);
grad[y]++;
}
for(int i=1;i<=n;i++)
if(grad[i]==0){
q[k]=i;
k++;
}
for(int i=1;i<=n;i++){
for(int j=0;j<v[q[i]].size();j++){
grad[v[i][j]]--;
if(grad[v[i][j]]==0){
q[k]=v[i][j];
k++;
}
}
}
for(int i=1;i<=n;i++)
cout<<q[i]<<" ";
return 0;
}
