Pagini recente » Cod sursa (job #3292385) | Cod sursa (job #387693) | Cod sursa (job #1812555) | Cod sursa (job #2449105) | Cod sursa (job #1344760)
#include <fstream>
using namespace std;
ifstream fin("sortaret.in");
ofstream fout("sortaret.out");
typedef struct node {
int to;
node *next;
} *pnode;
const int MAX = 50000;
int n, m;
pnode graf[MAX];
char visited[MAX];
int sol[MAX];
int count;
void add(int from, int to) {
pnode n = new node;
n->to = to;
n->next = graf[from];
graf[from] = n;
}
void push(int n) {
sol[count] = n;
count++;
}
void df(int current) {
visited[current] = 1;
pnode p = graf[current];
while (p) {
if (visited[p->to] == 0) {
df(p->to);
}
p = p->next;
}
push(current);
}
void sort() {
for (int i = 0; i < n; i++) {
if (visited[i] == 0) {
df(i);
}
}
}
int main() {
fin >> n >> m;
int from, to;
for (int i = 0; i < m; i++) {
fin >> from >> to;
add(from, to);
}
sort();
for (int i = count - 1; i > 0; i--) {
fout << sol[i] << ' ';
}
fin.close();
fout.close();
return 0;
}