Pagini recente » Cod sursa (job #553659) | Cod sursa (job #1283240) | Cod sursa (job #1823442) | Cod sursa (job #1906541) | Cod sursa (job #124722)
Cod sursa(job #124722)
#include<stdio.h>
int i,n,s[1001],ka,m,ok=0,v1[10001],v2[10001],num=0;
int succesor(int k)
{
if(s[k]<n)
{
++s[k];
return 1;
}
return 0;
}
int valid(int k)
{
for(i=1;i<=k-1;++i)
if(s[k]==s[i])
return 0;
return 1;
}
int sol(int k)
{
return k==n;
}
void tipar()
{
++num;
if(num==ka)
{
for(int i=1;i<=n;++i)
printf("%d ",s[i]);
printf("\n");
ok=1;
}
}
int dusman(int k)
{
if(k==1)
return 1;
for(i=1;i<=m;++i)
if((s[k-1]==v1[i] && s[k]==v2[i])||(s[k-1]==v2[i] && s[k]==v1[i]))
return 0;
return 1;
}
void backtracking(int k)
{
if(ok==0)
{
s[k]=0;
while(succesor(k) && dusman(k))
if(valid(k))
if(sol(k))
tipar();
else
backtracking(k+1);
}
}
int main()
{
freopen("dusman.in","r",stdin);
freopen("dusman.out","w",stdout);
scanf("%d%d%d",&n,&ka,&m);
for(i=1;i<=m;++i)
scanf("%d%d",&v1[i],&v2[i]);
backtracking(1);
return 0;
}