Pagini recente » Cod sursa (job #2120070) | Cod sursa (job #2180589) | Cod sursa (job #239643) | Cod sursa (job #3221873) | Cod sursa (job #2157792)
#include <stdio.h>
#include <stdlib.h>
#define NMax 50003
typedef struct node{
int value;
struct node *next;
}Node;
Node *G[NMax];
int n,m,x,y,top;
int st[NMax],viz[NMax];
void insert(Node **first,int value){
if(*first == NULL){
Node *aux;
aux = (Node *)malloc(1 * sizeof(Node));
aux->value = value;
aux->next = NULL;
(*first) = aux;
return;
}
Node *aux;
aux = (Node *)malloc(1 * sizeof(int));
aux->value = value;
aux->next = (*first);
(*first) = aux;
}
void print_list(Node *first){
for(Node *p = first; p; p = p->next){
printf("%d ",p->value);
}
printf("\n");
}
void dfs(int nod){
viz[nod] = 1;
for(Node *p = G[nod]; p; p = p->next){
if(!viz[p->value]){
dfs(p->value);
}
}
st[++top] = nod;
}
int main(){
freopen("sortaret.in","r",stdin);
freopen("sortaret.out","w",stdout);
scanf("%d%d",&n,&m);
for(int i = 1; i <= n; ++i){
G[i] = NULL;
}
for(int i = 1; i <= m; ++i){
scanf("%d%d",&x,&y);
insert(&G[x],y);
}
for(int i = 1; i <= n; ++i){
if(!viz[i]){
dfs(i);
}
}
for(int i = n; i >= 1; --i){
printf("%d ",st[i]);
}
return 0;
}