Cod sursa(job #421944)

Utilizator iamdoruTanase Theodor iamdoru Data 21 martie 2010 21:19:26
Problema Felinare Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.92 kb
#include<stdio.h>
FILE *f,*g;
int contor=0,n,m,t[10];
int a[10][10];
int bf() 
	{
	int j,p,i,u=1,coada[10],sel[10];
	for(j=1;j<=n+2;j++) 
		sel[j]=0;
	coada[1]=n+1;
	for(j=1;j<=n;j++)
		if(a[n+1][j]==1) 
			{
			u++;
			coada[u]=j;
			}
	p=u;
	for(j=2;j<=p;j++) 
		for(i=1;i<=n;i++)
			if((sel[i]==0)&&(a[coada[j]][i]==1)) 
				{
				u++;
				coada[u]=i;
				sel[i]=1;
				t[i]=coada[j];	
				}
	for(j=p+1;j<=u;j++)		
		if(a[coada[j]][n+2]==1) 
			{
			contor++;
			a[coada[j]][n+2]=0;
			a[t[coada[j]]][coada[j]]=0;
			a[n+1][t[coada[j]]]=0;
			return 1;
			}	
	return 0;
	}
int main() {
int i,x,y;
f=fopen("felinare.in","r");
fscanf(f,"%d%d",&n,&m);
for(i=1;i<=m;i++) 
	{
	fscanf(f,"%d%d",&x,&y);
	a[x][y]=1;
	}
fclose(f);
for(i=1;i<=n;i++) 
	{
	a[n+1][i]=1;
	a[i][n+2]=1;
	}
x=1;
while(x)
	x=bf();
g=fopen("felinare.out","w");
fprintf(g,"%d\n",2*n-contor);
fclose(g);
return 0;}