Cod sursa(job #130731)

Utilizator gabitzish1Gabriel Bitis gabitzish1 Data 1 februarie 2008 19:15:25
Problema Taramul Nicaieri Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.86 kb
#include <stdio.h>

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


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