Cod sursa(job #65744)

Utilizator anna_bozianuBozianu Ana anna_bozianu Data 11 iunie 2007 21:28:44
Problema Balanta Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.2 kb
#include<stdio.h>
int n,m,cg,cu,i,j,cc,us[1050],gr[1050],a[1050],b[1050],tip;
int main()
{
	FILE *f,*g;
	f=fopen("balanta.in","r");
	g=fopen("balanta.out","w");
	fscanf(f,"%d%d",&n,&m);
	cu=n;cg=n;
	for(i=1;i<=n;i++)
	{ us[i]=1;gr[i]=1;}
	for(i=1;i<=m;i++)
	{
		fscanf(f,"%d",&cc);
		for(j=1;j<=cc;j++)
		 fscanf(f,"%d",&a[j]);
		for(j=1;j<=cc;j++)
		 fscanf(f,"%d",&b[j]);
		fscanf(f,"%d",&tip);
		if(tip==0)
		for(j=1;j<=cc;j++)
		{ if(us[a[j]]){ us[a[j]]=0;cu--;}
		  if(us[b[j]]){ us[b[j]]=0;cu--;}
		  if(gr[a[j]]){ gr[a[j]]=0;cg--;}
		  if(gr[b[j]]){ gr[b[j]]=0;cg--;}
		}
		if(tip==1)
		{ for(j=1;j<=cc;j++)
		  { gr[a[j]]++;us[b[j]]++;}
		 cu=0;cg=0;
		 for(j=1;j<=n;j++)
		 { gr[j]/=2;us[j]/=2;cg+=gr[j];cu+=us[j];}
		}
		if(tip==2)
		{ for(j=1;j<=cc;j++)
		  { gr[b[j]]++;us[a[j]]++;}
		 cu=0;cg=0;
		 for(j=1;j<=n;j++)
		 { gr[j]/=2;us[j]/=2;cg+=gr[j];cu+=us[j];}
		}
	}
	if(cu==1&&cg==0)
	{ for(i=1;i<=n;i++)
	   if(us[i]) break;
	   fprintf(g,"%d\n",i);
	   fcloseall();
	   return 0;
	}
	if(cu==0&&cg==1)
	{ for(i=1;i<=n;i++)
	   if(gr[i]) break;
	   fprintf(g,"%d\n",i);
	   fcloseall();
	   return 0;
	}
	fprintf(g,"0\n");
	fcloseall();
	return 0;
}