Pagini recente » Cod sursa (job #2945621) | Cod sursa (job #1430029) | Cod sursa (job #238235) | Cod sursa (job #1408614) | Cod sursa (job #1703031)
#include <iostream>
#include <fstream>
#include <vector>
#include <queue>
using namespace std;
vector <int> G[50010];
vector <int> rez;
int gradInterior[50010];
int N, M;
void Read()
{
ifstream f("sortaret.in");
f >> N >> M;
for (int i = 1; i <= M; ++ i)
{
int x, y;
f >> x >> y;
G[x].push_back(y);
gradInterior[y]++;
}
f.close();
}
void Solve()
{
queue <int> Q;
for(int i = 1; i <= N; ++ i)
if (gradInterior[i] == 0)
Q.push(i);
while(!Q.empty())
{
int nodExtras = Q.front();
Q.pop();
rez.push_back(nodExtras);
for (vector<int> :: iterator it = G[nodExtras].begin(); it != G[nodExtras].end(); ++ it)
{
gradInterior[*it]--;
if(gradInterior[*it] == 0)
Q.push(*it);
}
}
}
void Write()
{
ofstream g("sortaret.out");
for (vector <int> :: iterator it = rez.begin(); it != rez.end(); ++ it)
g << *it << " ";
g << "\n";
g.close();
}
int main()
{
Read();
Solve();
Write();
return 0;
}