Cod sursa(job #1342419)

Utilizator buzu.tudor67Tudor Buzu buzu.tudor67 Data 13 februarie 2015 23:41:45
Problema Dusman Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.33 kb
#include<fstream>
using namespace std;
ifstream fi("dusman.in");
ofstream fo("dusman.out");

const int MAX_N = 1002;

int st[MAX_N],sol[MAX_N];
int i,j,n,m,k,x,y,nr;
bool a[MAX_N][MAX_N];
bool viz[MAX_N],t;

void tipar(){
     ++nr; 
     if(nr==m){
               for(int j=1;j<=n;j++) sol[j]=st[j];
               t=0;
              }
}

void back(int k){
     if(!t) return;
     if(k==n+1) tipar();
     else for(int i=1;i<=n;i++)
            if(!viz[i] && (k==1 || (k>1)*a[st[k-1]][i])){
                                                         viz[i]=1;
                                                         st[k]=i;
                                                         back(k+1);
                                                         viz[i]=0;
                                                        }
}

int main(){
    fi>>n>>m>>k;
    
    for(i=1;i<=n;i++)
      for(j=1;j<=n;j++) a[i][j]=1;
    
    for(i=1;i<=n;i++){
                      a[i][i]=0;
                      viz[i]=0;
                     }
    
    for(i=1;i<=k;i++){
                      fi>>x>>y;
                      a[x][y]=0;
                      a[y][x]=0;
                     }
    
    t=1;
    back(1);
    
    for(i=1;i<=n;i++) fo<<sol[i]<<' ';
    
    fi.close();
    fo.close();
    return 0;
}