求一个图,每一个点的度数都为K并且必须至少要有一个桥.

构造题:

仅仅有k为奇数的时候有解, 构造这种一个图,左边一团有 k+1 个点 , 右边一团也有 k+1 个点, 中间经过 m1 , m2 连着一个桥.

假设左右两团是全然图,则每一个点的度数都为k, 如今考虑怎样通过m1,m2连接起来而又不改变度数.

显然这个图是对称的,仅仅考虑左边和点m1,m1和m2是一个桥,要连一条边,m1 和左边的团某个点A要连在一起,又要连一条边,这时A点的度数多了,要和团里的其它点B断掉一条边,为了保持B的度数不变,B再连一条边到m1,这时m1的度就至少为3了,然后将m1的度补全. 每次从左边团中删掉一条边,然后将这条边的两个点连到m1上就能够了.m1的度每次添加2,所以假设k为奇数的话都能够用这个方案构造出来.

D. Regular Bridge
time limit per test

2 seconds

memory limit per test

256 megabytes

input

standard input

output

standard output

An undirected graph is called k-regular, if the degrees of all its vertices are equal k. An edge of a connected graph is called a bridge, if after removing it the graph is being split into two connected components.

Build a connected undirected k-regular graph containing at least one bridge, or else state that such graph doesn't exist.

Input

The single line of the input contains integer k (1 ≤ k ≤ 100) — the required degree of the vertices of the regular graph.

Output

Print "NO" (without quotes), if such graph doesn't exist.

Otherwise, print "YES" in the first line and the description of any suitable graph in the next lines.

The description of the made graph must start with numbers n and m — the number of vertices and edges respectively.

Each of the next m lines must contain two integers, a and b (1 ≤ a, b ≤ na ≠ b), that mean that there is an edge connecting the vertices aand b. A graph shouldn't contain multiple edges and edges that lead from a vertex to itself. A graph must be connected, the degrees of all vertices of the graph must be equal k. At least one edge of the graph must be a bridge. You can print the edges of the graph in any order. You can print the ends of each edge in any order.

The constructed graph must contain at most 106 vertices and 106 edges (it is guaranteed that if at least one graph that meets the requirements exists, then there also exists the graph with at most 106 vertices and at most 106 edges).

Sample test(s)
input
1

output
YES
2 1
1 2

Note

In the sample from the statement there is a suitable graph consisting of two vertices, connected by a single edge.

import java.util.*;
import java.math.*;public class Main
{int k,midl,midr;boolean[][] edge = new boolean[330][330];boolean[] used = new boolean[330];void cut_and_link(int from,int to,int goal){int tk=k-3;while(tk>0){boolean flag=false;for(int i=from;i<to&&flag==false;i++){if(used[i]==true) continue;for(int j=i+1;j<to;j++){if(i==2*k+4||i==4+k||i==1+k||i==1) continue;if(j==2*k+4||j==4+k||j==1+k||j==1) continue;if(used[j]==true) continue;if(edge[i][j]==true){used[i]=used[j]=true;//cutedge[i][j]=edge[j][i]=false;//linkedge[i][goal]=edge[goal][i]=true;edge[j][goal]=edge[goal][j]=true;// flagflag=true;break;}}}tk-=2;}}void build_tuan(int from ,int to){for(int i=from;i<=to;i++){for(int j=i+1;j<=to;j++){edge[i][j]=edge[j][i]=true;}}}void sovle(int k){midl=k+2; midr=k+3;build_tuan(1,k+1);edge[1][midl]=edge[midl][1]=true;edge[1][k+1]=edge[k+1][1]=false;edge[k+1][midl]=edge[midl][k+1]=true; cut_and_link(2,k+1,midl);edge[midl][midr]=edge[midr][midl]=true;build_tuan(k+4,2*k+4);edge[2*k+4][midr]=edge[midr][2*k+4]=true;edge[k+4][2*k+4]=edge[2*k+4][k+4]=false;edge[k+4][midr]=edge[midr][k+4]=true;cut_and_link(k+4,2*k+4,midr);}Main(){Scanner in = new Scanner(System.in);k=in.nextInt();if(k%2==0){System.out.println("No");return ;}System.out.println("Yes");if(k==1){System.out.println("2 1\n1 2");}else{sovle(k);int num=2*k+4,cnt=0;for(int i=1;i<=num;i++)for(int j=i+1;j<=num;j++)if(edge[i][j]) cnt++;System.out.printf("%d %d\n",num,cnt);for(int i=1;i<=num;i++){for(int j=i+1;j<=num;j++){if(edge[i][j]){System.out.printf("%d %d\n",i,j);}}}}}public static void main(String[] args){new Main();}
}

转载于:https://www.cnblogs.com/gccbuaa/p/6957388.html

Codeforces 550D. Regular Bridge 构造相关推荐

  1. cf550D. Regular Bridge(构造)

    题意 给出一个$k$,构造一个无向图,使得每个点的度数为$k$,且存在一个桥 Sol 神仙题 一篇写的非常好的博客:http://www.cnblogs.com/mangoyang/p/9302269 ...

  2. Codeforces 26B. Regular Bracket Sequence

    Codeforces 26B. Regular Bracket Sequence 传送门:https://codeforces.com/problemset/problem/26/B 题目大意: 其实 ...

  3. CodeForces - 287C Lucky Permutation(构造)

    题目链接:点击查看 题目大意:构造一个合法的排列,满足 ppi=n−i+1p_{p_{i}}=n-i+1ppi​​=n−i+1 题目分析:因为第四个样例的存在降低了本题的难度,不然感觉还是有点难度的一 ...

  4. CodeForces - 468C Hack it!(构造+数位dp)

    题目链接:点击查看 题目大意:求出一段区间 [l,r][l,r][l,r] 的数位和对 aaa 取模后为 000.更具体的,设 f(x)f(x)f(x) 为 xxx 的数位和,本题需要求出一对 [l, ...

  5. CodeForces - 1561E Bottom-Tier Reversals(构造)

    题目链接:点击查看 题目大意:给出一个长度为 nnn 的排列,每次操作可以选择一个奇数长度的前缀然后反转,需要构造一种方案,使得在不超过 5n2\frac{5n}{2}25n​ 次操作后使得序列有序 ...

  6. CodeForces - 1494E A-Z Graph(构造+思维)

    题目链接:https://vjudge.net/problem/CodeForces-1494E 题目大意:给出一个初始时只有 nnn 个点的有向带权图,需要执行 mmm 次操作,每次操作分为下列三种 ...

  7. CodeForces - 1494D Dogeforces(贪心+构造)

    题目链接:点击查看 题目大意:给出 nnn 个叶子结点和一个 n∗nn*nn∗n 的 LCALCALCA 矩阵,其中 LCALCALCA 表示的是最近公共祖先节点的权值,现在需要构造出一棵自顶向下权值 ...

  8. CodeForces - 148C Terse princess (构造)

    题目链接:http://codeforces.com/problemset/problem/148/C点击打开链接 C. Terse princess time limit per test 1 se ...

  9. [ An Ac a Day ^_^ ] CodeForces 468A 24 Game 构造

    题意是让你用1到n的数构造24 看完题解感觉被样例骗了-- 很明显 n<4肯定不行 然后构造出来4 5的组成24的式子 把大于4(偶数)或者5(奇数)的数构造成i-(i-1)=1 之后就是无尽的 ...

最新文章

  1. OSPF完全配置2--NSSA
  2. OSChina 周五乱弹 —— 静静的思考下人生
  3. JavaScript高级程序设计20.pdf
  4. 确保企业的大数据投资达到预期的5种方法
  5. 零基础Python小游戏
  6. Linux中的15个‘echo’ 命令实例
  7. 2018级C语言大作业 - 坦克动荡
  8. apache的源码包编译
  9. 【013】故宫博物院数字文物库-让文物随时可赏
  10. win10时间不准_Win10实用技巧之win10系统电脑重置
  11. 机器学习—决策树模型
  12. PS图层混合模式详解
  13. 企业上云是工业互联网的前提,中国企业上云潜力巨大
  14. 你打英雄联盟or王者荣耀为什么老是匹配到怨种队友,进来看
  15. hadoop开启后用http访问出错
  16. DWG文件中怎么插入jpg
  17. Vscode快捷键失灵屏幕全屏无法退出
  18. Parsing error: missing-semicolon-after-character-reference.
  19. Fresco的使用一
  20. 带你走进与千万数据通信者共成长的“家园”

热门文章

  1. npm run dev 和 npx webpack-dev-server
  2. hadoop(6)——mrjob的使用(2)——交给hadoop集群
  3. Check failed: error == cudaSuccess (74 vs. 0) misaligned address
  4. HDU-6470 Count (构造矩阵+矩阵快速幂)
  5. linux下nano修改并保存
  6. C++ 11 创建和使用共享 weak_ptr
  7. [转] c++的多态(一个接口,多种实现)
  8. Pwn环境配置(三)——ubuntu环境搭建
  9. 乐视手机android流量,乐视手机流量不能用怎么办
  10. 语言代码编程大赛简讯_精品干货:C语言的高效编程与代码优化