Cod sursa(job #132863)

Utilizator Darth_NiculusIvan Nicolae Darth_Niculus Data 6 februarie 2008 20:15:57
Problema Dusman Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.95 kb
/* Ivan Nicolae - Dusman - Infoarena */
#include <stdio.h>
#include <stdlib.h>

#define NMAX 1001
#define INPUT  "dusman.in"
#define OUTPUT "dusman.out"

int i,n,m,k,st[NMAX],A[NMAX][NMAX],Mark[NMAX];

void Print(void)
{
 int i;
 for (i=1;i<=n;i++)
    printf("%d ",st[i]);
 printf("\n");
}

void Dusman(int poz)
{
 int i;
 if (poz==n+1)
   {
    k--;
    if (!k)
      Print();
   }
   else if (poz<n+1)
          {
           for (i=1;i<=n;i++)
              if (!Mark[i] && !A[st[poz-1]][i])
                {
                 st[poz]=i;
                 Mark[i]=1;
                 Dusman(poz+1);
                 Mark[i]=0;
                }
          }
}

int main()
{
 freopen(INPUT,"r",stdin);
 freopen(OUTPUT,"w",stdout);

 scanf("%d%d%d",&n,&k,&m);
 for (i=1;i<=m;i++)
    {
     int x,y;
     scanf("%d%d",&x,&y);
     A[x][y]=A[y][x]=1;
    }

 Dusman(1);

 fclose(stdin);
 fclose(stdout);
 return 0;
}