#include #include #include using namespace std; int main(int argc, char* argv[]) { int n = atoi(argv[1]); int m = atoi(argv[2]); int seed = atoi(argv[3]); std::mt19937 rng(seed); std::uniform_int_distribution vertices(1, n); vector > edges; for (int i = 0; i < m; ++i) { int a = vertices(rng); int b = vertices(rng); while (a == b) { b = vertices(rng); } if (a > b) { int t = a; a = b; b = t; } edges.push_back(make_pair(a, b)); } // shuffle vertices vector v; for (int i = 0; i < n; ++i) { v.push_back(i); } std::shuffle(v.begin(), v.end(), rng); // cerr << edges[0].first << " " << edges[0].second << endl; for (pair& e : edges) { e.first = v[e.first - 1] + 1; e.second = v[e.second - 1] + 1; } // cerr << edges[0].first << " " << edges[0].second << endl; // 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; }