Cod sursa(job #761789)

Utilizator Theorytheo .c Theory Data 27 iunie 2012 14:27:11
Problema Taramul Nicaieri Scor 5
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.99 kb
#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;

int constr(int x,int nr )
{
    for(int i = N; i  && nr ;i--)
        if(v[i].in && 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;
}