Cod sursa(job #236531)

Utilizator Bogdan_tmmTirca Bogdan Bogdan_tmm Data 27 decembrie 2008 20:49:19
Problema Dusman Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.78 kb
#include<iostream>
#include<stdio.h>
FILE *f=fopen("dusman.in","r"),*g=fopen("dusman.out","w");
int st[1001],a[1001],k,n,m,k1,t=1;
void read()
{

	fscanf(f,"%d %d %d",&n,&k,&m);
	for(int k=1;k<=n;k++)
		a[k]=k;
	for(int i=1;i<=m;i++)
	{
		int v1,v2;
		fscanf(f,"%d %d",&v1,&v2);
		if(v1<v2)
			a[v1]=a[v2];
		else
			a[v2]=a[v1];
	}
}
int valid(int i)
{

	for(int j=1;j<i;j++)
		if(st[j]==st[i]||a[st[j]]==a[st[j+1]])
			return 0;
	return 1;
}
void afisare()
{
	for(int i=1;i<=n;i++)
		fprintf(g,"%d ",st[i]);
}
void back(int i)
{
	if(t)
	for(int pval=1;pval<=n;pval++)
	{
		st[i]=pval;
		if(valid(i))
			if(i==n)
			{
				k1++;
				if(k1==k)
					afisare(),t=0;
			}
			else
				back(i+1);
	}
}
int main()
{
	read();
	back(1);
	return 0;
}