Pagini recente » Cod sursa (job #3140246) | Cod sursa (job #2275540) | Cod sursa (job #1963147) | Cod sursa (job #1467200) | Cod sursa (job #282001)
Cod sursa(job #282001)
using namespace std;
#include<cstdio>
#define Nmax 101
int n,in[Nmax],ex[Nmax],s,m[Nmax][Nmax],i,j;
int find(int i)
{
for(j=1;j<=n;j++)
if(j!=i && in[j]==ex[j] && m[i][j]==0 && in[j]) return j;
for(j=1;j<=n;j++)
if(in[j] && m[i][j]==0 && i!=j) return j;
}
void back(int k)
{
if(k==s) return;
else
{
for(i=1;i<=n;i++)
if(ex[i])
{
j=find(i);
m[i][j]=1;
in[j]--;
ex[i]--;
back(k+1);
}
}
}
void read()
{
freopen("harta.in","r",stdin);
scanf("%d",&n);
for(i=1;i<=n;i++)
scanf("%d%d",&ex[i],&in[i]);
}
int main()
{
read();
for(i=1;i<=n;i++) s+=in[i];
back(0);
freopen("harta.out","w",stdout);
printf("%d\n",s);
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
if(m[i][j]) printf("%d %d\n",i,j);
return 0;
}