Cod sursa(job #848465)

Utilizator stoicatheoFlirk Navok stoicatheo Data 5 ianuarie 2013 15:08:42
Problema Dusman Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.07 kb
#include<fstream>
using namespace std;
 
ifstream f("dusman.in");
ofstream g("dusman.out");
 
int n,k,m,i,length,start,nrord,terminat;
int enemy[1001][10];
int nrenemy[1001];
int viz[1001];
int buff[1001];
 
void afisare()
{for(int k=1; k<=n; k++)
   g<<buff[k]<<" ";
 g<<endl;  
}
 
void bkt(int x)
{
if(terminat==0)
{     
if(length>=n)
  {nrord++;
   if(nrord==k)
      {afisare(); 
       terminat=1;
      return;}
  }   
else
{     
for(int j=1; j<=n; j++)
  if(viz[j]==0 && j!=enemy[x][1] && j!=enemy[x][2] && j!=enemy[x][3])
    {length++;
     viz[j]=1;
     buff[length]=j;
     bkt(j);
     buff[length]=0;
     viz[j]=0;
     length--;}     
}
}     
}
 
int main()
{f>>n>>k>>m;
int a,b;
for(i=1; i<=m; i++)
  {f>>a>>b;
   nrenemy[a]++;
   enemy[a][nrenemy[a]]=b;
   nrenemy[b]++;
   enemy[b][nrenemy[b]]=a;}
 
nrord=0;
for(start=1; start<=n; start++)
{if(terminat==1)
   break;
length=1;
viz[start]=1;
buff[length]=start;   
bkt(start); 
buff[length]=0;
viz[start]=0;
}  
   
f.close();
g.close();
return 0;}