Pagini recente » Cod sursa (job #306902) | Cod sursa (job #1861761) | Cod sursa (job #2381082) | Cod sursa (job #224505) | Cod sursa (job #126457)
Cod sursa(job #126457)
#include <stdio.h>
int n,k,m;
int g[100][2];
int w[1000];
int solnr=0;
void citire()
{
int i;
scanf("%d %d %d",&n,&k,&m);
for (i=1;i<=m;i++)
scanf("%d %d",&g[i][0],&g[i][1]);
}
int succ(int k)
{
if (w[k]<n)
{
w[k]++;
return 1;
} else return 0;
}
int ver(int k)
{
int i,j,l;
for (i=1;i<=m;i++)
for (l=1;l<=k;l++)
if (((w[l-1]==g[i][0] || w[l+1]==g[i][0]) && w[l]==g[i][1])||
((w[l-1]==g[i][1] || w[l+1]==g[i][1]) && w[l]==g[i][2]))
return 0;
for (i=1;i<k;i++) if (w[i]==w[k]) return 0;
return 1;
}
void init(int k)
{
w[k]=0;
}
void afis()
{
solnr++;
if (solnr==k) {
for (int i=1;i<=n;i++) printf("%d ",w[i]);
}
}
void faback()
{
int scc,vld;
int k=0;
k++;
init(k);
while (k>0)
{
do
{
scc=vld=0;scc=succ(k);
if (scc) vld=ver(k);
} while ((scc && !vld) && scc);
if (scc)
{
if (k==n) afis();
else { k++;init(k);}
} else k--;
}
}
int main()
{
freopen("dusman.in","r",stdin);
freopen("dusman.out","w",stdout);
citire();
faback();
return 0;
}