Pagini recente » Cod sursa (job #272280) | Cod sursa (job #803450) | Cod sursa (job #1856802) | Cod sursa (job #2743044) | Cod sursa (job #653886)
Cod sursa(job #653886)
#include<stdio.h>
using namespace std;
int k,i,m,n,x[500002],a[500002],b[500002],ap[100002];
int valid(int k)
{
if(ap[x[k]]>1) return 0;
if(b[x[k-1]]!=a[x[k]]&&k>1) return 0;
if(k==m&&b[x[k]]!=a[x[1]]) return 0;
return 1;
}
void back()
{
k=1;
x[k]=0;
ap[0]=1;
while(k>0)
{
while(x[k]<m&&k<=m)
{
x[k]++;
ap[x[k]-1]--;
ap[x[k]]++;
if(valid(k))
{
if(k==m)
{
printf("%d %d ",a[x[1]],b[x[1]]);
for(i=2;i<=m;i++)
printf("%d ",b[x[i]]);
}
else
{
k++;
x[k]=0;
ap[0]++;
}
}
}
ap[x[k]]--;
k--;
}
printf("-1\n");
}
int main()
{
freopen("ciclueuler.in","r",stdin);
freopen("ciclueuler.out","w",stdout);
scanf("%d",&n);
scanf("%d",&m);
for(i=1;i<=m;i++)
{
scanf("%d",&a[i]);
scanf("%d",&b[i]);
}
back();
return 0;
}