Pagini recente » Cod sursa (job #650913) | Cod sursa (job #259654) | Cod sursa (job #2951781) | Cod sursa (job #2687291) | Cod sursa (job #2967156)
#include <bits/stdc++.h>
using namespace std;
ifstream f("harta.in");
ofstream g("harta.out");
struct vp{
int pos;
int cnt;
} v[101], tmp;
inline bool cmp(vp a, vp b){
if(a.cnt == b.cnt)
return a.pos > b.pos;
return a.cnt > b.cnt;
}
int n, m, in[101], out[101];
int main() {
f >> n;
for(int i = 1; i <= n; i ++){
f >> in[i] >> out[i];
m += in[i];
}
g << m << "\n";
for(int i = 1; i <= n; i ++){
if(in[i] > 0){
for(int j = 1; j <= n; j ++) {
v[j].pos = j;
v[j].cnt = out[j];
}
sort(v + 1, v + n + 1, cmp); // sortez in functie de out-degree, iar la egalitate in functie de pozitie
for(int k = 1; k <= n; k ++){ // pun muchii in graf cat timp in != 0
if(in[i] == 0) break;
if(v[k].pos != i){
g << i << " " << v[k].pos << "\n";
in[i]--;
out[v[k].pos]--;
}
}
}
}
return 0;
}