Pagini recente » Cod sursa (job #840419) | Cod sursa (job #619086) | Cod sursa (job #2304987) | Cod sursa (job #2052945) | Cod sursa (job #2334089)
#include <bits/stdc++.h>
using namespace std;
int n, m;
vector<vector<int>> graph;
vector<int> extGrade;
void readFromFile(){
ifstream fin("sortaret.in");
fin>>n>>m;
graph.resize(n+1, vector<int>());
extGrade.resize(n+1);
int x, y;
for(int i=1; i<=m; i++){
fin>>x>>y;
graph.at(x).push_back(y);
extGrade.at(y)++;
}
fin.close();
}
int Q[50000+1];
void topologicalSort(){
for(int i=1; i<=n; i++)
if(extGrade.at(i)==0) Q[++Q[0]] = i;
for(int i=1; i<=n; i++){
for(auto& elem:graph.at(Q[i])){
extGrade.at(elem)--;
if(!extGrade.at(elem)) Q[++Q[0]] = elem;
}
}
}
int main()
{
readFromFile();
topologicalSort();
ofstream fout("sortaret.out");
for(int i=1; i<=n; i++) fout<<Q[i]<<" ";
fout.close();
}