Pagini recente » Cod sursa (job #2704895) | Cod sursa (job #3172923) | Cod sursa (job #3127446) | Cod sursa (job #1832688) | Cod sursa (job #1909594)
#include <iostream>
#include <fstream>
#include <vector>
#include <queue>
#define nmax 50005
using namespace std;
int n, m;
int grad[nmax];
vector <int> G[nmax];
vector <int> sol;
queue <int> q;
void read()
{
ifstream f("sortaret.in");
f >> n >> m;
for(int i=0, x, y; i<m; ++i)
{
f >> x >> y;
G[x].push_back(y);
++grad[y];
}
f.close();
}
void solve()
{
for(int i=1; i<=n; ++i)
{
if(!grad[i]) q.push(i);
}
while(q.size())
{
int x = q.front(); q.pop(); sol.push_back(x);
for(int i=0; i<G[x].size(); ++i)
{
--grad[G[x][i]];
if(!grad[G[x][i]])
q.push(G[x][i]);
}
}
}
void out()
{
ofstream g("sortaret.out");
for(int i=0; i<sol.size(); ++i)
g << sol[i] << ' ';
g<< '\n';
g.close();
}
int main()
{
read();
solve();
out();
return 0;
}