Pagini recente » Cod sursa (job #156747) | Cod sursa (job #394484) | Cod sursa (job #308566) | Cod sursa (job #1325564) | Cod sursa (job #1255844)
#include <fstream>
#include <vector>
using namespace std;
#define fileIn "sortaret.in"
#define fileOut "sortaret.out"
#define maxN 50030
#define maxM 100050
vector <int> vec[maxN];
int prev[maxN];
int q[maxN];
int first = 1, last;
void addQ( int x )
{
q[++last] = x;
}
int getQ()
{
if ( first > last )
return 0;
++first;
return q[first-1];
}
int main()
{
ifstream sIn( fileIn );
ofstream sOut( fileOut );
int n, m, i;
sIn >> n >> m;
int x, y;
int first;
for ( i = 1; i <= m; ++i )
{
sIn >> x >> y;
vec[x].push_back( y );
++prev[y];
}
for ( i = 1; i <= n; ++i )
{
if ( !prev[i] )
addQ( i );
}
int c = getQ();
int size;
while ( c )
{
sOut << c << ' ';
size = vec[c].size();
for ( i = 0; i < size; ++i )
{
--prev[ vec[c][i] ];
if ( !prev[ vec[c][i] ] )
addQ( vec[c][i] );
}
c = getQ();
}
sOut << '\n';
return 0;
}