Cod sursa(job #981147)

Utilizator alex_ovidiunituAlex Ovidiu Nitu alex_ovidiunitu Data 6 august 2013 14:51:31
Problema Dusman Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.35 kb
//12.09
#include <iostream>
#include <fstream>
using namespace std;
int n,k,kk,m,x[1005],sol,apar[1005];
bool a[1005][1005];
int next()
{
    int i;
    if (k==1 && x[k]<n){
     x[k]++; apar[x[k]]++; return 1;
    }
    for (i=x[k]+1;i<=n;i++)
        if (i!=x[k-1])
            if (a[x[k-1]][i]==0)
                if (!apar[i])
                {
                    x[k]=i;
                    apar[i]++;
                    return 1;
                }
    return 0;
}
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)
        {
           ok= next();
           if (ok==0)
           break;
        }
        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
        {
            apar[x[k]]=0;
            k--;
            apar[x[k]]=0;
        }
    }
}