Cod sursa(job #1308235)

Utilizator otnielMercea Otniel otniel Data 3 ianuarie 2015 19:45:18
Problema Dusman Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.98 kb
#include<iostream>
#include<stdio.h>
FILE *f,*g;
using namespace std;
int sol[1002],n,z,a[1002][1002],nr,vr,m;
int valid(int k)
{
    for(int i=1;i<k;i++)
        if(sol[i]==sol[k])
        return 0;
    if(k>1)
    {
        if(a[sol[k]][sol[k-1]]!=0)
            return 0;
        else
            return 1;
    }
   else
    return 1;
}
int back(int k)
{
    if(k==n+1)
    {
nr++;
        if(nr==z)
        {
            vr=1;
            for(int i=1;i<k;i++)
                fprintf(g,"%d ",sol[i]);
               return 1;
        }
    }
    else
    {
        sol[k]=0;
        while(sol[k]<n)
        {
            sol[k]++;
            if(valid(k)&&vr==0)
                back(k+1);
        }
    }
}
int main()
{f=fopen("dusman.in","r");
g=fopen("dusman.out","w");
    fscanf(f,"%d %d %d",&n,&z,&m);
    for(int i=1;i<=m;i++)
    {
        int q=0,w=0;
        fscanf(f,"%d %d",&q,&w);
        a[q][w]=a[w][q]=1;
    }
   back(1);
}