Pagini recente » Cod sursa (job #2607518) | Cod sursa (job #2695611) | Cod sursa (job #1411651) | Cod sursa (job #2221473) | Cod sursa (job #940586)
Cod sursa(job #940586)
#include <fstream>
#include <stdio.h>
#include <cstdio>
#include <cstring>
#include <vector>
using namespace std ;
#define MAXNR 50100
vector<int> g[MAXNR];
int viz[MAXNR],gol[MAXNR];
int N,M;
ifstream cin("sortaret.in");
ofstream cout("sortaret1.out");
void citire(){
cin >> N >> M ;
// init
for (int i = 1 ; i <= N ; i++){
gol[i]=0;
viz[i]=0;
}
// citire
int a,b;
for (int i = 0 ; i < M ; i++) {
cin >> a >> b ;
g[a].push_back(b);
gol[b]++;
}
}
void rezolvare(void){
int i,j,x,y,n = 1;
int que[MAXNR];
for(i=1 ; i <= N ; i ++) que[i] = 0 ;
for(i=1 ; i <= N ; i ++) //pentru a gasi un punct de start
if (gol[i]==0) {que[1] = i ; break ; }
for(i=1 ; i <= N ; i ++){ //pentru a verifica sa am N noduri afisate
x = que[i];
for(j=0;j<g[x].size();j++){ //verific toate nodurile sub el
y = g[x][j] ;
gol[y] --;
if (gol[y] == 0) {n++;que[n] = y;}
}
}
for(i=1 ; i <= N ; i ++)
cout << que[i] << " ";
}
int main(){
citire();
rezolvare();
cout.flush();
return 0 ;
}