Pagini recente » Cod sursa (job #2692762) | Cod sursa (job #2416877) | Cod sursa (job #2043718) | Cod sursa (job #677243) | Cod sursa (job #2434354)
#include <bits/stdc++.h>
using namespace std;
int main() {
ifstream cin("harta.in");
ofstream cout("harta.out");
int n; cin >> n;
vector<pair<int, int>> deg(n);
int m = 0;
for (int i = 0; i < n; ++i) {
cin >> deg[i].first >> deg[i].second;
m += deg[i].first;
}
cout << m << endl;
vector<int> graph(n);
iota(graph.begin(), graph.end(), 0);
for (int i = 0; i < n; ++i) {
sort(graph.begin(), graph.end(), [&](int a, int b) {
return deg[a] > deg[b];
});
for (int j = 0; j < n && deg[i].second != 0; ++j) if (i != graph[j]) {
assert(deg[graph[j]].first != 0);
--deg[graph[j]].first;
--deg[i].second;
cout << graph[j] + 1 << ' ' << i + 1 << '\n';
}
}
}