Cod sursa(job #130728)

Utilizator gabitzish1Gabriel Bitis gabitzish1 Data 1 februarie 2008 19:03:47
Problema Taramul Nicaieri Scor 5
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.81 kb
#include <stdio.h>

int n;
typedef struct
{
	int in, out;
} noduri;
noduri v[102];


void BF()
{
	int i, p, u, c[100000];
	p = u = 1;
	c[1] = 1;
	while (p <= u)
	{
		for (i = 1; i <= n; i++)
			if (i != c[p] && ((v[i].in && v[c[p]].out) || (v[i].out && v[c[p]].in)))
			{
				c[++u] = i;
				if (v[i].in && v[c[p]].out)
				{
					v[c[p]].out--;
					v[i].in--;
					printf("%d %d\n", c[p], i);
				}
				else
				{
					v[c[p]].in--;
					v[i].out--;
					printf("%d %d\n", i, c[p]);
				}
			}
		p++;
	}
}



int main()
{
	freopen("harta.in","r",stdin);
	freopen("harta.out","w",stdout);

	int i, x, y, s = 0;
	scanf("%d",&n);
	for (i = 1; i <= n; i++)
	{
		scanf("%d %d", &x, &y);
		v[i].in = y;
		v[i].out = x;
		s += x;
	}

	printf("%d\n",s);

	BF();

	return 0;
}