Pagini recente » Cod sursa (job #1177502) | Cod sursa (job #3866) | Cod sursa (job #2283530) | Cod sursa (job #3042153) | Cod sursa (job #671953)
Cod sursa(job #671953)
#include <vector>
#include <fstream>
#include <cstdlib>
#include <iterator>
#include <algorithm>
#define N_MAX 50011
#define SET_MAX (50000>>3)+1
using namespace std;
typedef unsigned int uint;
char was[SET_MAX];
vector< uint > v;
vector< uint > G[N_MAX];
inline void DFS( uint x )
{
vector< uint >::const_iterator it=G[x].begin(), iend=G[x].end();
was[x>>3]|=1<<(x&7);
for( ; it < iend; ++it )
if( 0 == ( was[*it>>3] & (1<<(*it&7)) ) )
DFS( *it );
v.push_back( x );
}
int main()
{
uint N, M, x, y, i;
ifstream in( "sortaret.in" );
for( in>>N>>M; M; --M )
{
in>>x>>y;
G[x].push_back( y );
}
for( i=1; i <= N; ++i )
if( 0 == ( was[i>>3] & (1<<(i&7)) ) )
DFS( i );
ofstream out( "sortaret.out" );
copy( v.rbegin(), v.rend(), ostream_iterator<uint>( out, " " ) );
out<<'\n';
return EXIT_SUCCESS;
}