Pagini recente » Monitorul de evaluare | Cod sursa (job #366087) | Cod sursa (job #2576591) | Cod sursa (job #130187) | Cod sursa (job #1554079)
#include <fstream>
#include <vector>
#include <cstring>
using namespace std;
ifstream f("sortaret.in");
ofstream g("sortaret.out");
vector<int> Graf[50001], L, S;
int incomingNodes[50001];
int N, M;
void citire()
{
int i, x, y;
f >> N >> M;
for (i = 0;i < M;i++)
{
f >> x >> y;
incomingNodes[y] += 1;
Graf[x].push_back(y);
}
for (i = 1;i <= N;i++)
if (incomingNodes[i]==0)
S.push_back(i);
}
void afisare()
{
for (vector<int>::iterator i = L.begin();i != L.end();i++)
g << *i << " ";
}
int main()
{
citire();
int n, m;
while (!S.empty())
{
n = S.back();
S.pop_back();
L.push_back(n);
while (!Graf[n].empty())
{
m = Graf[n].back();
incomingNodes[m]--;
if(incomingNodes[m]==0) S.push_back(m);
Graf[n].pop_back();
}
}
afisare();
return 0;
}