Pagini recente » Cod sursa (job #1500049) | Cod sursa (job #2456263) | Cod sursa (job #556940) | Cod sursa (job #7687) | Cod sursa (job #124712)
Cod sursa(job #124712)
#include<stdio.h>
int i,n,s[100],ka,m,ok=0,v1[10000],v2[10000],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=0;
}
}
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)
{
s[k]=0;
while(succesor(k) && dusman(k))
if(valid(k))
if(sol(k))
tipar();
else
if(ok==0)
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;
}