Cod sursa(job #170557)
Utilizator | Data | 2 aprilie 2008 21:45:10 | |
---|---|---|---|
Problema | Dusman | Scor | 0 |
Compilator | cpp | Status | done |
Runda | Arhiva de probleme | Marime | 1.1 kb |
#include<stdio.h>
FILE *f=fopen("dusman.in","r"),*g=fopen("dusman.out","w");
int n,k,vec,v[1001],nrsol,stiv[1001];
char a[1001][1001];
void back(int cur)
{
for(int i=1;i<=n;i++)
{
if(cur==1)
{
v[i]=1;
stiv[cur]=i;
back(cur+1);
v[i]=0;
}
else
{
if(!v[i]&&!a[stiv[cur-1]][i])
{
if(cur==n)
{
nrsol++;
if(nrsol==k)
{
stiv[n]=i;
for(int j=1;j<=n;fprintf(g,"%d ",stiv[j]),j++);
}
}
else
{
v[i]=1;
stiv[cur]=i;
back(cur+1);
v[i]=0;
}
}
}
}
}
int main()
{
fscanf(f,"%d %d %d",&n,&k,&vec);
int x,y;
for(int i=1;i<=vec;fscanf(f,"%d %d",&x,&y),a[x][y]=a[y][x]=1,i++);
back(1);
fclose(f);
fclose(g);
return 0;
}