Pagini recente » Cod sursa (job #154922) | Cod sursa (job #199610) | Cod sursa (job #2638821) | Cod sursa (job #997021) | Cod sursa (job #2210899)
#include <iostream>
#include <algorithm>
#include <fstream>
#include <vector>
using namespace std;
ifstream fin("sortaret.in");
ofstream fout("sortaret.out");
int N, M;
vector <int> adjList[50000];
vector <int> S , L;
int indegree[50000] = { 0 };
void Read(void)
{
pair <int, int> prop;
fin >> N >> M;
for (int i = 0; i < M; i++)
{
fin >> prop.first >> prop.second;
indegree[prop.second]++;
adjList[prop.first].push_back(prop.second);
}
for (int i = 1; i <= N; i++)
{
if (!indegree[i])
{
S.push_back(i);
}
}
}
void Sortare(void)
{
int n;
while (!S.empty())
{
n = S.back();
S.pop_back();
L.push_back(n);
for (int m : adjList[n])
{
indegree[m]--;
if (!indegree[m])
{
S.push_back(m);
}
}
}
}
void Print(void)
{
for (unsigned int i = 0; i < L.size(); i++)
{
fout << L.at(i) << ' ';
}
}
int main(void)
{
Read();
Sortare();
Print();
return 0;
}