Pagini recente » Cod sursa (job #1999688) | Cod sursa (job #3178396) | Cod sursa (job #274531) | Cod sursa (job #1994310) | Cod sursa (job #1038940)
#include <fstream>
#include <vector>
#include <cstring>
using namespace std;
ifstream fin("sortaret.in"); ofstream fout("sortaret.out");
const int NMAX=50100;
int n, m, gext[NMAX], Q[NMAX];
vector <int> G[NMAX];
void read ()
{
fin>>n>>m;
memset (gext, 0, sizeof(gext));
for (int i=1, nod1, nod2; i<=m; ++i)
{
fin>>nod1>>nod2;
G[nod1].push_back(nod2);
gext[nod2]++;
}
}
void solve ()
{
vector <int>::iterator it;
int x;
for (int i=1; i<=n; ++i)
{
if (gext[i]==0)
{
++Q[0];
Q[Q[0]]=i;
}
}
for (int i=1; i<=n; ++i)
{
x=Q[i];
for (it=G[x].begin(); it!=G[x].end(); ++it)
{
gext[*it]--;
if (gext[*it]==0)
{
++Q[0];
Q[Q[0]]=*it;
}
}
}
}
void print ()
{
for (int i=1; i<=n; ++i)
fout<<Q[i]<<" ";
fout<<"\n";
}
int main ()
{
read ();
solve ();
print ();
}