Pagini recente » Cod sursa (job #1669419) | Cod sursa (job #3251111) | Cod sursa (job #640390) | Cod sursa (job #2507559) | Cod sursa (job #2165354)
#include <iostream>
#include <fstream>
#include <queue>
#include <vector>
#include <algorithm>
using namespace std;
ifstream f("harta.in");
ofstream g("harta.out");
int *intra,*iese,n,nr;
vector<int> graf[101];
int main()
{
queue<int> c;
f>>n;
intra=new int[n+1];
iese=new int[n+1];
for(int i=1; i<=n; i++)
{
f>>iese[i]>>intra[i];
nr+=iese[i];
if(iese[i]==intra[i]) c.push(i);
}
while(!c.empty())
{
int var=c.front();
c.pop();
for(int i=1; i<=n&&iese[var]; i++)
if(i!=var)
{
vector<int>::iterator p;p=find(graf[var].begin(),graf[var].end(),i);
if(intra[i]&& p == graf[var].end())
{
intra[i]--;
iese[var]--;
graf[var].push_back(i);
c.push(i);
}
}
}
g<<nr<<"\n";
for(int i=1; i<=n; i++)
{
for(int j=0; j<graf[i].size(); j++)
g<<i<<" "<<graf[i][j]<<"\n";
}
}