Pagini recente » Cod sursa (job #2737506) | Cod sursa (job #2988356) | Cod sursa (job #909055) | Cod sursa (job #3160822) | Cod sursa (job #1988322)
#include <fstream>
#include <vector>
using namespace std;
ifstream F("sortaret.in");
ofstream G("sortaret.out");
int n, m, x, y, viz[50003];
struct node{node *prec, *urm; int info;};
node *u, *p;
struct node1{node1 *urm; int info;} *l[50003];
void dfs(int nod)
{
viz[nod] = 1;
node1 *prim;
prim = l[nod]->urm;
while(prim!= NULL)
{
if(!viz[prim->info])
dfs(prim->info);
prim = prim->urm;
}
node *q;
q = new node;
u->info = nod;
u->urm = q;
q->prec = u;
q->urm = NULL;
u = q;
}
int main()
{
F >> n >> m;
p = new node;
u = new node;
p->prec = NULL;
p->urm = u;
u->prec = p;
u->urm = NULL;
for(int i = 1; i <= n; ++ i)
l[i] = new node1, l[i]->urm = NULL;
node1 *q;
for(int i = 1; i <= m; ++ i)
{
F >> x >> y;
q = new node1;
q->info = y;
q->urm = l[x]->urm;
l[x]->urm = q;
}
for(int i = 1; i <= n; ++ i)
{
if(!viz[i])
dfs(i);
}
u = u->prec;
while(u->prec != p->prec)
G << u->info << " ", u = u->prec;
return 0;
}