Pagini recente » Cod sursa (job #3244245) | Cod sursa (job #1434339) | Cod sursa (job #2399892) | Cod sursa (job #1875398) | Cod sursa (job #1444527)
#include <fstream>
#include <cstring>
#include <vector>
using namespace std;
const int NMAX = 105;
int inG[NMAX],outG[NMAX];
int m[NMAX *NMAX][NMAX];
int main()
{
int x,y,n;
ifstream in("harta.in");
ofstream out("harta.out");
in>>n;
int number = 0;
for(int i = 1 ;i <= n; ++i)
{
in>>x>>y;
outG[i] = x;
inG[i] = y;
number+=outG[i];
}
out<<number<<"\n";
for(int i = 1 ; i <= n; ++i)
{
int nr[NMAX];
memset(nr,0,NMAX + 1);
//vector <int> nr(n + 1, 0);
for(int j = 1 ; j <= n; ++j)
{
if(i!=j && inG[j])
{
m[inG[j]][++nr[inG[j]]] = j;
}
}
for(int j = n; j > 0; --j)
{
// && nr[j] adica am noduri in care am j intrari
// incepi descrescator!
while(outG[i] && nr[j])
{
int to = m[j][nr[j]--];
outG[i]--;
inG[to]--;
out<<i<<" "<<to<<"\n";
}
}
}
}