Cod sursa(job #2135000)

Utilizator Ruxandra985Nanu Ruxandra Laura Ruxandra985 Data 18 februarie 2018 15:17:31
Problema Dusman Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.94 kb
#include <cstdio>
#include <vector>

using namespace std;
int a[1001][1001],f[1001],n,k,st,sol[1001];
FILE *fin=fopen ("dusman.in","r");
FILE *fout=fopen ("dusman.out","w");
vector <int> v[1001];
void back (int pas){
    int i,x;
    if (st==k)
        return;
    if (pas==n+1){
        st++;
        if (st==k)
            for (i=1;i<=n;i++)
                fprintf (fout,"%d ",sol[i]);
    }
    for (i=0;i<v[sol[pas-1]].size();i++){
        x=v[sol[pas-1]][i];
        if (!f[x]){
            f[x]=1;
            sol[pas]=x;
            back(pas+1);
            f[x]=0;
        }
    }
}
int main()
{
    int m,i,j,x,y;
    fscanf (fin,"%d%d%d",&n,&k,&m);
    for (i=1;i<=m;i++){
        fscanf (fin,"%d%d",&x,&y);
        a[x][y]=a[y][x]=1;
    }
    for (i=0;i<=n;i++){
        for (j=1;j<=n;j++){
            if (i!=j && a[i][j]==0)
                v[i].push_back(j);
        }
    }
    back(1);
    return 0;
}