Codeforces Round #306 (Div. 2) D - Regular Bridge 构造
来源:互联网 发布:c语言sqrt函数 编辑:程序博客网 时间:2024/05/22 00:54
D - Regular Bridge 题意:问能不能构造出这样一张图,使得每个点的度为k,且至少有一个桥。
k为偶数时一定不满足。可以这么想,一张图通过桥分为对称的两部分,那么只需要构造出一部分,另一部分也就一样了。那么假设某点和桥相连,去掉桥这条边之后,该点度数为k-1,为奇数,而该部分里面其他点的度数=k为偶数。而可知,该部分的图是一张强连通图,由握手定理得,强连通图里面度数为奇数的点数一定为偶数,与当前只有一个奇数点(即与桥相连的那个点)矛盾。所以k为偶数一定不满足。
当k为奇数时,k>=3时,令n = 2*k+4.(来自官方题解,,)k-1个顶点 再选择 k-1个顶点 连边,即2~k间相互连, 另外2个顶点 就要选择k个顶点连边,即另外两个顶点,先和2~k连,这样一共是k-1了,再相互连一下,2~k之间相互连,然后满足这种 2~3, 4~5 的不要,就是k-2了,再与1连,就是k-1,最后和另外两个连,就是k另外2个顶点 就要选择k个顶点连边,即另外两个顶点,先和2~k连,这样一共是k-1了,再相互连一下,就是k。
详见代码
const int N = 110;vector <int> v[N<<1];int n, m, k;int main(){ while( ~scanf("%d", &k) ) { if( k % 2 == 0 ) { puts("NO"); continue; } else if( k == 1 ) { puts("YES"); printf("2 1\n1 2\n"); continue; } else { puts("YES"); n = 2 * k + 4, m = n * k / 2; int x = k+2; for( int i = 1; i <= (x<<1)+3; ++i ) v[i].clear(); v[1].push_back( 1+x ); for( int i = 2; i <= k; ++i ) { v[1+x].push_back(i+x); v[1].push_back(i); } for( int i = 2; i <= k; ++i ) { for( int j = i+1; j <= k; ++j ) { if( i % 2 == 0 && i+1 == j ) continue; v[i].push_back(j); v[i+x].push_back(j+x); } v[i].push_back( k+1 ); v[i].push_back( k+2 ); v[i+x].push_back( x+k+1 ); v[i+x].push_back( x+k+2 ); } v[k+1].push_back(k+2); v[x+k+1].push_back(x+k+2); printf("%d %d\n", n, m); for( int i = 1; i <= x*2; ++i ) { int sz = v[i].size(); for( int j = 0; j < sz; ++j ) { printf("%d %d\n", i, v[i][j]); } } } } return 0;}
0 0
- Codeforces Round #306 (Div. 2) D - Regular Bridge 构造
- Codeforces Round #306 (Div. 2) D. Regular Bridge (构造)
- Codeforces Round #306 (Div. 2) 550D - Regular Bridge 构造图
- Codeforces Round #306 (Div. 2) D. Regular Bridge 图论,构造,脑洞 1月26日
- Codeforces Round #306 (Div. 2)-D. Regular Bridge
- Codeforces Round #306 (Div. 2) D. Regular Bridge
- #306 (div.2) D. Regular Bridge
- codeforces #550D Regular Bridge 构造
- Codeforces 550D Regular Bridge (构造)
- Codeforces 550D. Regular Bridge 构造
- CodeForces 550D Regular Bridge(构造)
- CodeForces 550D - Regular Bridge(构造)
- CodeForces 550 D.Regular Bridge(构造)
- Codeforces Round #309 (Div. 2) D 构造
- codeforces #306 D 550D D. Regular Bridge(构造+图论)
- Codeforces 550D Regular Bridge【思维+构造】好题!
- 【codeforces 550D】Regular Bridge
- Codeforces Round #340 (Div. 2)(D)构造
- java android 按拼音排序
- oracle查询 :一个角色包括的系统权限,对象权限,Oracle有多少种角色,某个用户有什么角色
- NSURLSession NSURLConnection下载大文件 断点下载
- 疯狂Java学习笔记(75)-----------NIO.2第一篇
- 我的互联网安全观
- Codeforces Round #306 (Div. 2) D - Regular Bridge 构造
- 第十二周项目三立体类族共有的抽象类
- thinkPHP 从写URL配置掉index.php
- 水仙花数
- ibatis 的<![CDATA[干嘛的
- HIVE快速入门
- 常见向量范数和矩阵范数
- java 到底老年代和年轻代的比例为多大合适呢?
- 技术 blog10 by 八戒