Cod sursa(job #186537)

Utilizator luk17Luca Bogdan luk17 Data 28 aprilie 2008 10:37:58
Problema Dusman Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.04 kb
#include<stdio.h>
int dus[1001][4],st[1010],top,n,m,k;
int evalid(int top)
{
int i;
for(i=1;i<top;i++)
if(st[i]==st[top])
   return 0;
for(i=1;i<=3;i++)
   if(dus[st[top-1]][i]==st[top])
       return 0;
       
return 1;
}
int main()
{
int a,b,i;
freopen("dusman.in","r",stdin);
scanf("%d%d%d",&n,&k,&m);
for(i=1;i<=m;i++)
    {
    scanf("%d%d",&a,&b);
    for(i=1;i<=3;i++)
       if(dus[a][i]==0)
         {
         dus[a][i]=b;
         break;
         }
    for(i=1;i<=3;i++)
       if(dus[b][i]==0)
         {
         dus[b][i]=a;
         break;
         }
    }

top=1;
st[top]=0;
int cand,nr=0;
while(nr<k)
    {
    cand=0;
    while(st[top]<n&&!cand)
        {
        st[top]++;
         cand=evalid(top);
        }
    if(cand==0)
        top--;
    else
       if(top==n)
            nr++;
        else
           {
           top++;
           st[top]=0;
           }

    
    }
freopen("dusman.out","w",stdout);
for(i=1;i<=n;i++)
printf("%d ",st[i]);
printf("\n");
return 0;
}