Cod sursa(job #602341)

Utilizator maritimCristian Lambru maritim Data 10 iulie 2011 22:17:39
Problema Dusman Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.86 kb
#include<stdio.h>

#define MaxN 1100

int V[MaxN];
int Viz[MaxN];
int A[MaxN][MaxN];
int N;
int K;
int M;
int gata;
int nr;

void citire(void)
{
	int a;
	int b;
	FILE *f = fopen("dusman.in","r");
	
	fscanf(f,"%d %d %d",&N,&K,&M);
	for(int i=1;i<=M;i++)
	{
		fscanf(f,"%d %d",&a,&b);
		A[a][b] = 1;
		A[b][a] = 1;
	}
	
	fclose(f);
}

void back(int k)
{
	if(k == N+1)
		if(nr == K-1)
			gata = 1;
		else
			nr ++;
	else
		for(int i=1;i<=N && !gata;i++)
			if(!Viz[i] && !A[V[k-1]][i])
			{
				Viz[i] = 1;
				V[k] = i;
				back(k+1);
				Viz[i] = 0;
			}
}

void solve(void)
{
	for(int i=1;i<=N && !gata;i++)
	{
		V[1] = i;
		Viz[i] = 1;
		back(2);
		Viz[i] = 0;
	}
}

int main()
{
	FILE *g = fopen("dusman.out","w");
	
	citire();
	solve();
	for(int i=1;i<=N;i++)
		fprintf(g,"%d ",V[i]);
	
	fclose(g);
	return 0;
}