咱們說一個無向圖是 p-interesting 當且僅當這個無向圖知足以下條件:ios
1. 該圖恰有 2 * n + p 條邊ide
2. 該圖沒有自環和重邊spa
3. 該圖的任意一個包含 k 個節點的子圖含有不超過 2 * k + p 條邊rest
如今,請你找出一個 p-interesting 包含 n 個節點的無向圖,輸出他的 2 * n + p 條邊code
數據範圍:5 ≤ n ≤ 24,0 ≤ p, 2 * n + p ≤ (n) * (n + 1) / 2blog
很久沒有作題了,刷刷水題練練手get
第一感受:亂搞,後來想了會兒,仍是亂搞string
構造方法:io
先將全部的點連成一個環,若是邊數不夠,就將間隔爲 1 個點的兩個點對之間創建一條邊,若是還不夠,就將間隔爲 2 個點的兩點對之間創建一條邊,而後是間隔爲 3 的,直到邊的數量到達 2 * n + p 爲止event
1 #include <iostream>
2 #include <cstring>
3 #include <cstdio>
4
5 using namespace std; 6
7 int t, n, k; 8
9 void deal() { 10 for (int step = 1, cnt = 0; cnt < 2 * n + k; step ++) { 11 for (int i = 1; i <= n && cnt < 2 * n + k; i ++, cnt ++) { 12 int a = i, b = i + step; 13 if (b > n) b -= n; 14 printf("%d %d\n", a, b); 15 } 16 } 17 } 18
19 int main() { 20 scanf("%d", &t); 21 for (int ca = 1; ca <= t; ca ++) { 22 scanf("%d%d", &n, &k); 23 deal(); 24 } 25 return 0; 26 }