Cod sursa(job #467230)

Utilizator udrescu_cristiUdrescu Cristian udrescu_cristi Data 28 iunie 2010 13:18:30
Problema Andrei Scor 25
Compilator cpp Status done
Runda Stelele Informaticii 2010, clasele X-XII, Ziua 2 Marime 0.86 kb
#include<stdio.h>

int a[1000][1000],i,st[1000],x,y,z,t=1,t1=1,n,m;

 int valid(int k)
{
	int i,t=1;
	if(k==1) return 1;
else
{
if(st[k]==0)
{
 for(i=1;i<k&&t;i++)
 {
	 if(st[i]==0&&a[k][i]==1) t=0;
	 if(st[i]==1&&a[k][i]==3) t=0;
 }
}
	if(st[k]==1)
{
 for(i=1;i<k&&t;i++)
 {
	 if(st[i]==0&&a[k][i]==3) t=0;
	 if(st[i]==1&&a[k][i]==2) t=0;
 }
} 
}
 return t;
 }
 
 void back(int k)
{
	st[k]=-1;
	while(k<=n&&st[k]<1&&t1)
	{
		st[k]++;
		if(valid(k))
		{
			if(k==n) 
			{
				int i;
				for(i=1;i<=n;i++)
					printf("%d ",st[i]);
				t1=0;
			}
		else
			back(k+1);
		}
	}
 }
 
 int main()
 {
	 freopen("andrei.in","r",stdin);
	 freopen("andrei.out","w",stdout);
	 
 scanf("%d%d\n",&n,&m);
 for(i=1;i<=m;i++)
 {
	 scanf("%d%d%d\n",&x,&y,&z);
	 a[x][y]=a[y][x]=z+1;
 }
 
 back(1);
 
return 0;
 }