Pagini recente » Cod sursa (job #1095585) | Cod sursa (job #1402396) | Cod sursa (job #2039809) | Cod sursa (job #664219) | Cod sursa (job #387247)
Cod sursa(job #387247)
# include <cstdio>
# include <fstream>
# include <cstdlib>
using namespace std;
int *a[103], n, m, in[103], out[103];
void read ()
{
ifstream fin ("harta.in");
fin>>n;
for (int i=1;i<=n;i++)
{
a[i]=(int *) malloc (4);
a[i][0]=0;
}
for (int i=1;i<=n;i++)
{
fin>>out[i]>>in[i];
m+=out[i];
for (int j=1;j<=out[i];j++)
a[i]=(int *) realloc(a[i], (a[i][0]+j+1)*4);
}
}
void leaga (int i, int j)
{
a[i][++a[i][0]]=j;
out[i]--;
in[j]--;
}
void rez (int k)
{
for (int i=1;i<=n;i++)
if (k!=i)
if (in[i])
{
leaga(k, i);
if (out[i])
rez(i);
}
}
void write ()
{
freopen ("harta.out", "w", stdout);
printf("%d\n", m);
for (int i=1;i<=n;i++)
for (int j=1;j<=a[i][0];j++)
printf("%d %d\n", i, a[i][j]);
}
int main ()
{
read ();
for (int i=1;i<=n;i++)
if (out[i])
rez (i);
write ();
return 0;
}