Cod sursa(job #237385)

Utilizator ssergiussSergiu-Ioan Ungur ssergiuss Data 29 decembrie 2008 17:15:51
Problema Dusman Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.97 kb
#include<stdio.h>
int n,k,m,q,ok,sol[1001];
struct dusman{
	int d[4];};
dusman a[1001];
int check(int val,int b){
	int i,j;
	for(i=1; i<b; ++i)
		if(sol[i]==val)
			return 0;
	return 1;}
void back(int b){
	int i,j;
	if(b==n+1){
		++q;
		for(i=2; i<=n; ++i)
			for(j=1; a[sol[i]].d[j]; ++j)
				if(sol[i-1]==a[sol[i]].d[j]){
					--q;
					i=n+1;
					break;}
		if(q==k){
			ok=1;
			for(i=1; i<=n; ++i)
				printf("%d ",sol[i]);}}
	else
		for(i=1; i<=n; ++i)
			if(check(i,b)){
				sol[b]=i;
				if(!ok)
					back(b+1);}}
void solve(){
    int i,x,y,z;
    scanf("%d%d%d",&n,&k,&m);
    for(i=1; i<=m; ++i){
        scanf("%d%d",&x,&y);
        z=1;
        while(a[x].d[z])
            ++z;
        a[x].d[z]=y;
        z=1;
        while(a[y].d[z])
            ++z;
        a[y].d[z]=x;}
    back(1);}
int main(){
    freopen("dusman.in","r",stdin);
    freopen("dusman.out","w",stdout);
    solve();
    return 0;}