Cod sursa(job #1670681)

Utilizator gorni97aaa aaa gorni97 Data 31 martie 2016 22:10:45
Problema Dusman Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.98 kb
#include <iostream>
#include <fstream>
using namespace std;
fstream g("dusman.out",ios::out);
int x[1001],k,as,ev,n,k1,a[1001][1001],m,nr=0;

void init()
{x[k]=0;}

void succesor()
{
    if(x[k]<n)
    {x[k]++;as=1;
    }else as=0;
}

void valid()
{ev=1;
int i,j;

for(i=1;((i<k)&&(ev==1));i++)
    {if(a[x[i]][x[i+1]]==1)
    ev=0;
        for(j=i+1;((j<=k)&&(ev==1));j++)
        if(x[i]==x[j])
        ev=0;
    }


}

int solutie()
{return (k==n);}

void tipar()
{int i;
nr++;
     if(nr==k1)
    {for(i=1;i<=k;i++)
       g<<x[i]<<" ";
k=-100;}


}

int main()



{ fstream f("dusman.in",ios::in);

int i,c,d,j;

f>>n>>k1>>m;

for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
a[i][j]=0;


for(i=1;i<=m;i++)
{f>>c>>d;
a[c][d]=1;
a[d][c]=1;}


k=1;
init();


while(k>0)
{do{succesor();
if(as)
    valid();
}while((as)&&((!as)||(!ev)));
if(as)
    if(solutie())
    tipar();
else
{k++;init();}
else
    k--;
}

g.close();

}