Pagini recente » Cod sursa (job #2459707) | Cod sursa (job #2689338) | Cod sursa (job #2464008) | Cod sursa (job #710299) | Cod sursa (job #705204)
Cod sursa(job #705204)
#include <fstream>
#define MAXN 50001
using namespace std;
typedef struct list{
int nod;
list* next;
}list;
int n,m;
list* graf[MAXN];
bool viz[MAXN];
int end[MAXN];
list* sol;
int ingrad[MAXN];
void insertsol(int nod){
list* p = new list;
p->nod = nod;
p->next = sol;
sol = p;
}
void add(int from, int to){
list* p = new list;
p->nod = to;
p->next = graf[from];
graf[from] = p;
ingrad[to]++;
}
void dfs(int cur){
list* p = graf[cur];
viz[cur] = true;
while(p){
if(!viz[p->nod]) dfs(p->nod);
p = p->next;
}
insertsol(cur);
}
int main(){
ifstream f("sortaret.in");
f >> n >> m;
int a,b;
for(int i=1; i<=m; i++){
f >> a >> b;
add(a,b);
}
f.close();
for(int i=1;i<=n;i++){
if(!ingrad[i]){
dfs(i);
}
}
ofstream g("sortaret.out");
list *p = sol;
while(p){
g << p->nod << " ";
p = p->next;
}
g.close();
return 0;
}