Pagini recente » Cod sursa (job #1414007) | Cod sursa (job #2075985) | Cod sursa (job #1325942) | Cod sursa (job #1223303) | Cod sursa (job #267291)
Cod sursa(job #267291)
#include<stdio.h>
#define IN "dusman.in","r",stdin
#define OUT "dusman.out","w",stdout
struct dusman{
int x,y;
};
int n,k,m;
dusman v[3020];
int m1[1020][3020];
int sol[1020];
char marc[1020];
void citire()
{
int tt,nr;
freopen(IN);
scanf("%d%d%d",&n,&k,&m);
for(int i=1;i<=m;++i)
{
scanf("%d%d",&nr,&tt);
m1[nr][tt]=1;
}
}
int valid(int p,int nr)
{
for(int i=1;i<=p;++i)
if(sol[i]==nr)
return 0;
return 1;
}
void afisare()
{
freopen(OUT);
for(int i=1;i<=n;++i)
printf("%d ",sol[i]);
printf("\n");
}
void back(int p)
{
if(p==n+1)
{
for(int i=1;i<p;++i)
printf("%d ",sol[i]);
printf("\n");
// for(int i=1;i<p;++i)
// for(int j=1;j<=m;++j)
// if((v[j].x==sol[i] && v[j].y==sol[i+1]) || (v[j].x==sol[i+1] && sol[i]==v[j].y))
// return;
--k;
if(k==0)
afisare();
return;
}
for(int i=1;i<=n && k;++i)
{
if(!marc[i] && !m1[sol[p-1]][i])
{
marc[i]=1;
sol[p]=i;
back(p+1);
marc[i]=0;
}
}
}
int main()
{
citire();
back(1);
return 0;
}