Cod sursa(job #521424)

Utilizator mvbinfoDragos Dinca mvbinfo Data 12 ianuarie 2011 14:50:15
Problema Cuplaj maxim in graf bipartit Scor 8
Compilator cpp Status done
Runda Arhiva educationala Marime 0.98 kb
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<math.h>
#define dim 10005 
#define dim2 5005
using namespace std;

int A[dim][dim],C[dim][dim],n,m,i,x,y,viz[dim],j;
int l[dim],c[dim],NR;

void citire()
{
	FILE *f=fopen("cuplaj.in","r");
	
fscanf(f,"%d %d %d",&n,&m,&m);

for(i=1;i<=m;i++)
{
	fscanf(f,"%d %d",&x,&y);
	
	y+=n;
	if(!viz[x])
	{
//	A[0][0]++;
	A[0][x]=x;
	viz[x]=1;}
	
	A[x][0]++;
	C[x][0]++;
	
	A[x][A[x][0]]=y;
	C[x][y]=1;
	
}

fclose(f);
}

void dfs()
{
	
	for(i=1;i<=n;i++)
	if(A[0][i])
	{		
		x=A[0][i];
		for(j=1;j<=A[x][0];j++)
		{
		y=A[x][j];
			if(C[x][y] && !viz[y])
				{
					NR++;
					C[x][y]=0;
					 
					l[NR]=x;
					c[NR]=y-n;
					viz[y]=1;
					
				}	
		}
	}
	
	
}


int main()
{
	FILE *g=fopen("cuplaj.out","w");
	citire();
	memset(viz,0,sizeof(viz));
	dfs();
		


fprintf(g,"%d\n",NR);
for(i=1;i<=NR;i++)
	fprintf(g,"%d %d\n",l[i],c[i]);

fclose(g);
return 0;
}