Pagini recente » Cod sursa (job #1799031) | Cod sursa (job #2356585) | Cod sursa (job #386852) | Cod sursa (job #3219040) | Cod sursa (job #761791)
Cod sursa(job #761791)
#include<fstream>
#include<vector>
#define nmax 104
using namespace std;
ifstream fin("harta.in");
ofstream fout("harta.out");
struct nod{int out, in; };//out- cate muchii ies din nodul i, in- cate intra
nod v[nmax];
vector <int> G[nmax];
int S, N;
int last , lastout;
bool exista(int x, int y)
{
for(int i = 0 ;i < G[x].size(); i++)
if(G[x][i] == y)
return 0;
return 1;
}
int constr(int x,int nr )
{
for(int i = N; i && nr ;i--)
if(v[i].in && x != i && exista(x,i))
{
G[x].push_back(i);
v[i].in--;
--nr;
}
}
void solve()
{
last = N;
for(int i = 1; i <= N; i++)
{
constr(i,v[i].out);
}
}
void read()
{
fin >> N;
int x, y;
for(int i = 1; i <= N ;i++)
{
fin >>x >>y;
v[i].out = x;
v[i].in = y;
S +=x;
}
}
int main()
{
read();
solve();
fout <<S <<'\n';
for(int i = 1; i <= N ;i++)
for(int j = 0;j < G[i].size(); j++)
fout <<i <<" " << G[i][j] << '\n';
fin.close();
return 0;
}