Pagini recente » Cod sursa (job #77140) | Cod sursa (job #1267804) | Cod sursa (job #2613969) | Cod sursa (job #2280826) | Cod sursa (job #282007)
Cod sursa(job #282007)
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)
{
int i;
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);
in[j]++;ex[i]++;m[i][j]=0;
}
}
}
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;
}