Pagini recente » Cod sursa (job #2433211) | Cod sursa (job #169917) | Monitorul de evaluare | Cod sursa (job #836976) | Cod sursa (job #634551)
Cod sursa(job #634551)
#include <iostream>
#include <fstream>
#include <deque>
#include <list>
#define FILEIN "sortaret.in"
#define FILEOUT "sortaret.out"
using namespace std;
list<int> graph[50000];
int indegree[50000];
deque<int> queue;
int main()
{
list<int> graph[50000];
list<int>::iterator lIter;
int n, m, i, aux, n1, n2, u, v, l;
ifstream f(FILEIN);
ofstream g(FILEOUT);
f >> n;
f >> m;
for (i = 1; i <= m; i++) {
f >> n1;
f >> n2;
graph[n1].push_front(n2);
indegree[n2]++;
}
for (i = 1; i <= n; i++)
if (!indegree[i])
queue.push_back(i);
while (!queue.empty()) {
u = queue.front();
queue.pop_front();
g << u << endl;
for (lIter = graph[u].begin(); lIter != graph[u].end(); lIter++) {
indegree[*lIter]--;
if (!indegree[*lIter])
queue.push_front(*lIter);
}
}
return 0;
}