Pagini recente » Cod sursa (job #2413494) | Cod sursa (job #185519) | Cod sursa (job #2297849) | Cod sursa (job #2656869) | Cod sursa (job #633314)
Cod sursa(job #633314)
#include<stdio.h>
#include<vector>
using namespace std;
vector<int> a[50001],sol;
int viz[50001];
FILE *c,*d;
void DFS(int v)
{ long int st[50001],vf,primul,k,j;
vf=1;
st[vf]=v;
viz[v]=1;
while(vf>=1) {
primul=st[vf];
k=0;
for(j=0;j<a[primul].size()&&k==0;j++)
if(viz[a[primul][j]]==0)
k=1;
if(k==1) {
j--;
vf++;
st[vf]=a[primul][j];
viz[a[primul][j]]=1;
}
else
{ sol.push_back(st[vf]);
vf--; }
}
}
int main()
{ long int i,j,n,m,x,y;
c=fopen("sortaret.in","r");
d=fopen("sortaret.out","w");
fscanf(c,"%ld %ld",&n,&m);
for(i=1;i<=m;i++) {
fscanf(c,"%ld %ld",&x,&y);
a[x].push_back(y); }
for(i=1;i<=n;i++)
if(viz[i]==0)
DFS(i);
for(i=sol.size()-1;i>=0;i--)
fprintf(d,"%ld ",sol[i]);
fclose(c);
fclose(d);
return 0;
}