Cod sursa(job #1872562)

Utilizator pati_mjPatricia Papura pati_mj Data 8 februarie 2017 13:25:59
Problema Dusman Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.11 kb
#include<fstream>
using namespace std;
ifstream f("dusman.in");
ofstream g("dusman.out");
int st[1000],n,k,x[1000],y[1000],z[1000],a,b,j,m,p=0;
void tipar()
{
    for(int i=1;i<=n;i++)
    g<<st[i]<<' ';
    g<<endl;
}

int valid(int k)
{ for(int i=1;i<=k-1;i++)

 if(st[i]==st[k])
       return 0;

 return 1;
 }

void bak(int k)
{
    for(int i=1;i<=n;i++)
       {
           if(i!=x[st[k-1]]&&i!=y[st[k-1]]&&i!=z[st[k-1]])
        st[k]=i;
            if (valid(k))
                if(k==n)
                {
                    p++;
                    if(p==k)
                        tipar();
                }
                else
                   bak(k+1);
          }

}
int main()
{
    f>>n>>k>>m;
    for(j=1;j<=m;j++)
    {
        f>>a>>b;
        if(x[a]==0)
            x[a]=b;
        else
            if(y[a]==0)
                y[a]=b;
            else
                z[a]=b;

        if(x[b]==0)
            x[b]=a;
        else
            if(y[b]==0)
                y[b]=a;
            else
                z[b]=a;
    }
    bak(1);
    return 0;
}