Pagini recente » Cod sursa (job #567921) | Cod sursa (job #441426) | Cod sursa (job #2537141) | Cod sursa (job #1524933) | Cod sursa (job #2206684)
#include <bits/stdc++.h>
using namespace std;
int main()
{ifstream in("sortaret.in");
ofstream out("sortaret.out");
int nr_noduri;
int nr_arce;
in>>nr_noduri;
in>>nr_arce;
vector<int> grade(nr_noduri+1,0);
vector<vector<int> >graf(nr_noduri+1,vector<int>(0));
for(int i=1;i<=nr_arce;i++){
int aux1,aux2;
in>>aux1>>aux2;
grade[aux2]++;
graf[aux1].push_back(aux2);
}
queue<int> reprezentare;
vector<int> topologie;
for(int i=1;i<=nr_noduri;i++){
if(grade[i]==0)reprezentare.push(i);
}
while(!reprezentare.empty()){
int aux=reprezentare.front();
topologie.push_back(aux);
reprezentare.pop();
for(unsigned int i=0;i<graf[aux].size();i++){
grade[graf[aux][i]]--;
if(grade[graf[aux][i]]==0)reprezentare.push(graf[aux][i]);
}
}
for(unsigned int i=0;i<topologie.size();i++){
out<<topologie[i]<<' ';
}
in.close();out.close();
return 0;
}