Pagini recente » Cod sursa (job #167881) | Cod sursa (job #255163) | Cod sursa (job #3238819) | Cod sursa (job #3032013) | Cod sursa (job #2926308)
#include <iostream>
#include <fstream>
#include <vector>
#include <queue>
using namespace std;
ifstream fin("sortaret.in");
ofstream fout("sortaret.out");
int n,m,x,y;
vector<vector<int>>lista_adiacenta;
vector <int> grad;
vector <int> sortare;
queue <int> coada;
void sortare_topologica(){
for(int i=1; i<=n; i++){
if(grad[i]==0){
coada.push(i);
}
}
while(!coada.empty()){
int nod=coada.front();
coada.pop();
sortare.push_back(nod);
for(auto j:lista_adiacenta[nod]){
grad[j]--;
if(grad[j]==0)
coada.push(j);
}
}
}
int main()
{
fin>>n>>m;
lista_adiacenta.resize(n+1);
grad.resize(n+1, 0);
for(int i=1; i<=m; i++){
fin>>x>>y;
lista_adiacenta[x].push_back(y);
grad[y]++;
}
// for(int i=1; i<=n;i++){
// cout<<grad[i]<<" ";
// }
// cout<<endl;
sortare_topologica();
for(auto i:sortare){
fout<<i<<" ";
}
return 0;
}