Cod sursa(job #340016)

Utilizator popoiu.georgeGeorge Popoiu popoiu.george Data 12 august 2009 16:38:00
Problema Dusman Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.98 kb
#include<fstream>
using namespace std;

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

int n,s[1001],mat[4000][4000],m,k,solutii;

void tipar();
int valid();

void back(int pas)
{
int i,j,gasit;
if(pas==n+1)
    {
    if(valid())
        {
        solutii++;
        if(solutii==k){tipar();return;}
        }
    }
else
    {
    for(i=1;i<=n;i++)
        {
        gasit=0;
        for(j=1;j<pas;j++)
            {
            if(i==s[j])gasit=1;
            }
        if(!gasit)
            {
            s[pas]=i;
            back(pas+1);
            }
        }
    }
}

int main()
{
int i,aux1,aux2;
f>>n>>k>>m;
for(i=1;i<=m;i++)
    {
    f>>aux1>>aux2;
    mat[aux1][aux2]=1;
    mat[aux2][aux1]=1;
    }
f.close();
back(1);
g.close();
return 0;
}

void tipar()
{
for(int i=1;i<=n;i++)g<<s[i]<<" ";
g<<endl;
}

int valid()
{
int i;
for(i=1;i<=n-1;i++)
    {
    if(mat[s[i]][s[i+1]])return 0;
    }
return 1;
}