Cod sursa(job #116267)

Utilizator savimSerban Andrei Stan savim Data 18 decembrie 2007 11:26:07
Problema Dusman Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.11 kb
#include <stdio.h>
int contor,i,j,n,m,k,p,q;
int a[1001][3];
int fol[1001],v[1001];
void afisare()
{
     int i;
     for (i=1; i<=n; i++)
         printf("%d ",v[i]);
     printf("\n");     
}
void dusman(int o)
{
     if (contor>k) return;
     if (o==n+1)
     {
        contor++;         
        if (contor==k)
           afisare();
        return;
     }
     int i;
     for (i=1; i<=n; i++)
     if (fol[i]==0 && (v[o-1]!=a[i][0] && v[o-1]!=a[i][1] && v[o-1]!=a[i][2]))
     {
        fol[i]=1;
        v[o]=i;
        dusman(o+1);
        fol[i]=0;
     }     
     
}
int main()
{
    
    freopen("dusman.in","r",stdin);
    freopen("dusman.out","w",stdout);
    
    scanf("%d%d%d",&n,&k,&m);
    for (i=1; i<=m; i++)
    {
        scanf("%d%d",&p,&q);
        if (a[p][0]!=0)
           if (a[p][1]!=0)
              a[p][2]=q;
           else a[p][1]=q;
        else a[p][0]=q;
        
        if (a[q][0]!=0)
           if (a[q][1]!=0)
              a[q][2]=p;
           else a[q][1]=p;
        else a[q][0]=p;
    }
    v[0]=-1;
	dusman(1);
    return 0;    
}