Mai intai trebuie sa te autentifici.
Cod sursa(job #2487453)
Utilizator | Data | 4 noiembrie 2019 19:46:17 | |
---|---|---|---|
Problema | Sortare topologica | Scor | 0 |
Compilator | cpp-64 | Status | done |
Runda | Arhiva educationala | Marime | 0.72 kb |
#include <fstream>
#include <list>
using namespace std;
int main()
{
ifstream fin("sortaret.in");
ofstream fout("sortaret.out");
list<unsigned int> * adjlist;
list<unsigned int> q;
unsigned int * indeg;
unsigned int v, i, j;
fin >> v >> i;
indeg = new unsigned int[v + 1]();
adjlist = new list<unsigned int>[v + 1];
while(fin >> i >> j){
adjlist[i].push_back(j);
indeg[j]++;
}
for(i = 1; i <= v; i++){
if(indeg[i] == 0){
q.push_back(i);
}
}
while(q.size()){
i = q.front();
` q.pop_front();
fout << i << " ";
for(list<unsigned int>::iterator it = adjlist[i].begin(); it != adjlist[i].end(); it++){
if(--indeg[*it] == 0){
q.push_back(*it);
}
}
}
return 0;
}