Pagini recente » Cod sursa (job #2681593) | Cod sursa (job #2865176) | Cod sursa (job #2450984) | Cod sursa (job #2979059) | Cod sursa (job #3033330)
#include <fstream>
#include <stack>
using namespace std;
#define FILE "sortaret"
ifstream in(FILE".in");
ofstream out(FILE".out");
#define N 50050
#define M 100100
struct el {
int vf, urm;
};
el g[2 * M];
int lst[N];
int nr;
void adauga(int u, int v) {
g[++nr].vf = v;
g[nr].urm = lst[u];
lst[u] = nr;
}
bool viz[N];
stack<int> stiva;
void dfs(int u) {
viz[u] = true;
for(int p = lst[u]; p != 0; p = g[p].urm) {
int v = g[p].vf;
if(!viz[v])
dfs(v);
}
stiva.push(u);
}
//parcurgere for(int p = lst[u]; p != 0; p = g[p].urm) { int v = g[p].vf; }
int main() {
int n, m;
in >> n >> m;
for(int i = 1; i <= m; i++) {
int u, v;
in >> u >> v;
adauga(u, v);
}
for(int i = 1; i <= n; i++)
if(!viz[i])
dfs(i);
while(!stiva.empty()) {
out << stiva.top() << ' ';
stiva.pop();
}
}