日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Codeforces 550D. Regular Bridge 构造

發布時間:2024/4/17 编程问答 47 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Codeforces 550D. Regular Bridge 构造 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.


求一個圖,每一個點的度數都為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?≤?n,?a?≠?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 构造的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。