Cod sursa(job #1593255)

Utilizator alin1999Buzatu Alin alin1999 Data 8 februarie 2016 14:30:27
Problema Dusman Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.17 kb
#include <fstream>
using namespace std;
ifstream fin("dusman.in");
ofstream fout("dusman.out");
int a[10001],b[10001],n,m,ok,j,v[1001],viz[1001],i,k,M,p;
void afis(int m)
{
    p++;
    if(p==k)
    {for(int i=1;i<=n;i++)
        fout<<v[i]<<" ";
    fout<<endl;}
}
int gata(int k)
{
    return 0;
}
int solutie(int m)
{
    if(m<n)
        return 0;
        else
        {
            ok=0;
            for(int j=1;j<=m;j++)
            for(int i=1;i<=n;i++)
            if(v[i]==a[j])
            {
                if(v[i+1]==b[j]||v[i-1]==b[j])
                    {ok=1;break;}
            }
            if(ok==0)
                return 1;
            else
                return 0;

        }
}
int cont(int m)
{
    return 1;
}
void backtrack(int m)
{
    if(p==k)
        return;
    for(int i=1;i<=n;i++)
        if(!viz[i])
        {
            v[m]=i;
            viz[i]=1;
         if(cont(m))
            if(solutie(m))
            {afis(m);
            }
        else
            backtrack(m+1);
            viz[i]=0;
}
}
int main()
{
    fin>>n>>k>>M;
    for(i=1;i<=M;i++)
    fin>>a[i]>>b[i];
backtrack(1);
return 0;}