Pagini recente » Cod sursa (job #2095673) | Cod sursa (job #1922945) | Cod sursa (job #2713731) | Cod sursa (job #1341318) | Cod sursa (job #2797089)
// Mihai Priboi
#include <stdio.h>
#include <vector>
#include <algorithm>
using namespace std;
#define MAXN 100000
struct point {
vector<int> muchii;
bool visited;
} noduri[MAXN + 1];
int v[MAXN + 1];
int ind;
void fill( int nod ) {
int i;
noduri[nod].visited = true;
for( i = 0; i < noduri[nod].muchii.size(); i++ ) {
if( !noduri[noduri[nod].muchii[i]].visited )
fill( noduri[nod].muchii[i] );
}
v[ind++] = nod;
}
int main() {
FILE *fin, *fout;
int n, m, i, x, y;
fin = fopen( "sortaret.in", "r" );
fscanf( fin, "%d%d", &n, &m );
for( i = 0; i < m; i++ ) {
fscanf( fin, "%d%d", &x, &y );
noduri[x].muchii.push_back(y);
}
fclose( fin );
for( i = 1; i <= n; i++ )
if( !noduri[i].visited )
fill(i);
fout = fopen( "sortaret.out", "w" );
for( i = ind - 1; i >= 0; i-- )
fprintf( fout, "%d ", v[i] );
fclose( fout );
return 0;
}