Cod sursa(job #893412)
Utilizator | Data | 26 februarie 2013 15:33:44 | |
---|---|---|---|
Problema | Dusman | Scor | 100 |
Compilator | cpp | Status | done |
Runda | Arhiva de probleme | Marime | 1.38 kb |
#include <fstream>
using namespace std;
ifstream fin("dusman.in");
ofstream fout("dusman.out");
int n,m,k,nr,b,c,l,x[1001],v[1001],a[1001][1001];
int cont (int k)
{
if((k>1&&a[x[k]][x[k-1]]==1)||(k==n&&a[x[k]][x[1]]==1))
return 0;
return 1;
}
void afisare(int k)
{
for(int i=1;i<=k;i++)
fout<<x[i]<<" ";
}
void back(int k)
{
x[k]=0;
while(k>0)
if(x[k]<n)
{
x[k]++;
if(v[x[k]]==0)
if(cont(k))
{
v[x[k]]=1;
if(k==n)
{
nr++;
if(nr==l)
{
afisare(k);
return ;
}
v[x[k]]=0;
}
else
{
k++;
x[k]=0;
}
}
}
else
{
k--;
v[x[k]]=0;
}
}
int main()
{
fin>>n>>l>>m;
for(int i=1;i<=m;i++){
fin>>b>>c;
a[b][c]=1;
a[c][b]=1;
}
back(1);
}