#include #include #include using namespace std; int main(int argc, char* argv[]) { int n = atoi(argv[1]); int seed = atoi(argv[2]); std::mt19937 rng(seed); std::uniform_int_distribution vertices(1, n); vector > edges; for (int i = 0; i < n; ++i) { for (int j = 0; j < n; ++j) { if (i == j) { continue; } edges.push_back(make_pair(i + 1, j + 1)); } } // shuffle vertices vector v; for (int i = 0; i < n; ++i) { v.push_back(i); } std::shuffle(v.begin(), v.end(), rng); for (pair& e : edges) { e.first = v[e.first - 1] + 1; e.second = v[e.second - 1] + 1; } // shuffle edges std::shuffle(edges.begin(), edges.end(), rng); cout << n << " " << edges.size() << "\n"; for (const pair e : edges) { cout << e.first << " " << e.second << "\n"; } return 0; }