Pagini recente » Cod sursa (job #616626) | Cod sursa (job #69460) | Cod sursa (job #2760145) | Cod sursa (job #2929372) | Cod sursa (job #829992)
Cod sursa(job #829992)
#include<fstream>
#include<algorithm>
#include<vector>
using namespace std;
int i,j,n,m,v[101][101],k,aux,nr=0;
int ok,x,y;
int t[102][102];
struct harta
{
int out,in,poz;
};
harta a[101],b[101];
bool cmp(harta a,harta b)
{
if(a.out==b.out)
return a.in>b.in;
return a.out>b.out;
}
bool cmp1(harta a,harta b)
{
if(a.in==b.in)
return a.out>b.out;
return a.in>b.in;
}
int main()
{
ifstream f("harta.in");
ofstream g("harta.out");
f>>n;
for(i=1;i<=n;++i)
{
f>>a[i].out>>a[i].in;
nr+=a[i].out;
a[i].poz=i;
b[i]=a[i];
}
//sort(a+1,a+n+1,cmp);
for(i=1;i<=n;++i)
{
//aux=b[i].in;
//b[i].in=0;
for(j=1;j<=n&&a[i].out;++j)
if(a[j].in&&j!=i)
{
v[i][j]=1;
t[j][++t[j][0]]=i;
--a[j].in;
--a[i].out;
}
else
if(a[j].in==0)
{
--a[i].out;
v[t[j][t[j][0]]][j]=0;
ok=0;
for(k=1;k<=n&&!ok;++k)
if(a[k].in)
v[t[j][t[j][0]]][k]=1,ok=1;
v[i][j]=1;
t[j][t[j][0]]=i;
}
//sort(b+1,b+n+1,cmp1);
/*g<<a[i].poz<<" "<<a[i].out<<"\n";
for(j=1;j<=n;++j)
g<<b[j].poz<<" "<<b[j].out<<" "<<b[j].in<<"\n";
g<<"\n";
m=a[i].out;
j=1;
while(j<=m&&m)
{
x=a[i].poz,y=b[j].poz;
--a[i].out;
if(b[j].in)
{
--b[j].in;
v[x][y]=1;
t[y][++t[y][0]]=x;
}
else
{
v[t[y][t[y][0]]][y]=0;
v[x][y]=1;
t[y][t[y][0]]=x;
}
++j;
}
b[i].in=aux;*/
}
g<<nr<<"\n";
for(i=1;i<=n;++i)
{
for(j=1;j<=n;++j)
if(v[i][j])
g<<i<<" "<<j<<"\n";
}
return 0;
}