Cod sursa(job #981054)

Utilizator alex_ovidiunituAlex Ovidiu Nitu alex_ovidiunitu Data 6 august 2013 12:21:20
Problema Dusman Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.11 kb
//12.09
#include <iostream>
#include <fstream>
using namespace std;
int n,k,kk,m,x[1005],sol;
bool a[1005][1005];
int posbun()
{
    int i,apar[1005]={0};
    apar[x[k]]++;
    for (i=1;i<k;i++)
    {
        apar[x[i]]++;
        if (apar[x[i]]==2) return 0;
        if (a[x[i]][x[i+1]]==1)
            return 0;
    }
    return 1;
}
int main()
{
    int i,xx,y,ok;
    fstream f,g;
    f.open("dusman.in",ios::in);
    g.open("dusman.out",ios::out);
    f>>n>>kk>>m;
    for (i=1;i<=m;i++)
    {
        f>>xx>>y;
        a[xx][y]=a[y][xx]=1;
    }
    k=1;
    while (k>0)
    {
        ok=0;
        while (x[k]<n && ok==0)
        {
            x[k]++;
            ok=posbun();
        }
        if (ok==1)
            if (k==n)
            {
                sol++;
                if (sol==kk)
                {
                    for (i=1;i<=n;i++)
                    g<<x[i]<<" ";
                    return 0;
                }
            }
            else
            {
                k++;
                x[k]=0;
            }
        else
        k--;
    }
}