Cod sursa(job #252223)

Utilizator AndreiDDiaconeasa Andrei AndreiD Data 4 februarie 2009 00:06:04
Problema Dusman Scor 10
Compilator c Status done
Runda Arhiva de probleme Marime 0.9 kb
#include <stdio.h>         
     
int n,st[1010],m,p,a,b,i,x[1000][1000];      
        
int valid(int k)      
{         
    for (i=1;i<k;++i)   
    if (st[k]==st[i] || (x[st[i]][st[i+1]]==1 || x[st[i+1]][st[i]]==1))   
       return 0;   
       return 1;   
}         
     
void back(int k)      
{         
    st[k]=0;       
    while(st[k]<n)   
    {      
        st[k]++;
        if (valid(k))         
        if (k==n) p--;      
        else back(k+1);      
        if (p==0) break;      
    }      
}         
int main()      
{         
   freopen("dusman.in","r",stdin);      
   scanf("%d %d %d",&n,&p,&m);      
   for (i=1;i<=m;++i)   
   {   
        scanf("%d %d",&a,&b);   
        x[a][b]=1;   
   }   
   back(1);   
   freopen("dusman.out","w",stdout);      
   for (i=1;i<=n;++i)   
         printf("%d ",st[i]);   
   return 0;         
}