Cod sursa(job #2260890)

Utilizator canmihaiCancescu Mihai canmihai Data 15 octombrie 2018 18:48:54
Problema Dusman Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.79 kb
#include <iostream>
#include <fstream>
#include <vector>
using namespace std;
ifstream fin ("dusman.in");
ofstream fout ("dusman.out");
int n,m,w,y,k,a[1010][1010],x[1010],f[1010],p=0,kk;
//vector <int> v[1010];
bool ok=0;
void afis(int k){
    for(int i=1 ; i<=k ; ++i)
        fout << x[i] <<" ";
    fout << endl;
}
bool verif(int k){
    if(f[x[k]]==1)
        return false;
    if(a[x[k]][x[k-1]]==1)
        return false;
    if(k<=n)
        return true;
    return false;


}
void back(int k){
    if(ok==1)
        return;
    for(int i=1;i<=n;++i){
        x[k]=i;
        if(verif(k)){
            f[x[k]]=1;
            if(k==n){
                p++;
                if(p==kk){
                    afis(k);
                    ok=1;
                }
            }
            back(k+1);
            f[x[k]]=0;
        }

    }
}

int main () {
    fin>>n>>kk>>m;
    for(int i=0;i<m;i++){
        fin>>w>>y;
        a[w][y]=1;
        a[y][w]=1;
    }
   // x[0]=1;
    back(1);








    return 0;
}

/*#include <iostream>
#include <fstream>
using namespace std;
int n,k,x[1010],m,a[1010][1010],z,y,fr[1010];
bool ok=1;
ifstream fin("dusman.in");
 ofstream fout("dusman.out");
void backtr(int pas)
{
    if(ok==0)
        return;
    if(pas==n+1){
        k--;
        if(k==0){
            for(int i=1;i<=n;i++)
                fout<<x[i]<<"";
                ok=0;
            return;
        }

    }
    else{
        for(int i=1;i<=n;i++)
          if(a[x[pas-1]][i]==0&&fr[i]==0){
            x[pas]=i;
            fr[i]=1;
            backtr(pas+1);
            fr[i]=0;
        }


    }
}
int main()
{

 fin>>n>>k>>m;
 for(int i=1;i<=m;i++){
    fin>>z>>y;
    a[z][y]=a[y][z]=1;

 }
 backtr(1);
}
*/