Pagini recente » Cod sursa (job #2080667) | Cod sursa (job #3178524) | Cod sursa (job #2021110) | Cod sursa (job #2569437) | Cod sursa (job #2839442)
#include <iostream>
#include <cstring>
using namespace std;
struct nod
{
int nr;
int d,f;
};
void sortare(int n,nod v[100])
{
for(int i=1;i<n;i++)
for(int j=i+1;j<=n;j++)
{
if(v[i].f>v[j].f)
swap(v[i],v[j]);
else
if(v[i].f==v[j].f && v[i].d>v[j].d)
swap(v[i],v[j]);
}
}
int exista_nod_nevizitat(int n,int viz[100])
{
for(int i=1;i<=n;i++)
if(!viz[i])
return i;
return 0;
}
void DF(int x,int n,int a[100][100])
{
nod v[100];
int viz[n+1];
memset(viz,0,sizeof(viz));
memset(v,0,sizeof(v));
int mom=1;
do
{
int k=1;
int st[100];
v[x].nr=x;
v[x].d=mom;
st[k]=x;
viz[x]=1;
while(k>0)
{
int j=1;
while(j<=n && !a[st[k]][j] || a[st[k]][j] && viz[j])
j++;
if(j>n)
{
mom++;
v[st[k]].f=mom;
k--;
}
else
{
k++;
mom++;
st[k]=j;
viz[j]=1;
v[j].nr=j;
v[j].d=mom;
}
}
}while((x=exista_nod_nevizitat(n,viz)));
sortare(n,v);
for(int i=n;i>=1;i--)
cout<<v[i].nr<<" ";
}
main()
{
int n,m;
cin>>n>>m;
int a[100][100];
memset(a,0,sizeof(a));
for(int i=1;i<=m;i++)
{
int x,y;
cin>>x>>y;
a[x][y]=1;
}
DF(1,n,a);
}