Pagini recente » Cod sursa (job #2923232) | Cod sursa (job #2115448) | Cod sursa (job #1116675) | Cod sursa (job #1765253) | Cod sursa (job #3190339)
#include <vector>
#include <fstream>
#include <algorithm>
using namespace std;
int main() {
ifstream f("harta.in");
ofstream g("harta.out");
int n;
f >> n;
vector<int> out_degree(n + 1), in_degree(n + 1);
int total_roads = 0;
for (int i = 1; i <= n; ++i) {
f >> out_degree[i] >> in_degree[i];
total_roads += out_degree[i];
}
g << total_roads << "\n";
for (int i = 1; i <= n; ++i) {
vector<pair<int, int>> destinations;
for (int j = 1; j <= n; ++j) {
if (j != i) {
destinations.emplace_back(in_degree[j], j);
}
}
sort(destinations.rbegin(), destinations.rend()); // Sortez in ordine descrescatoare dupa in-degree
for (int j = 0; j < out_degree[i]; ++j) {
g << i << " ";
int next_city = 0;
for (const auto& dest : destinations) {
if (dest.first > 0) {
next_city = dest.second;
--in_degree[next_city];
destinations.erase(find(destinations.begin(), destinations.end(), dest));
break;
}
}
g << next_city << "\n";
}
}
return 0;
}