Codeforces 550 D. Regular Bridge
\(>Codeforces \space 550 D. Regular Bridge<\)
题目大意 :给出 \(k\) ,让你构造出一张点和边都不超过 \(10^6\) 的无向图,使得每个点的度数都为 \(k\) 且至少有一条桥边。
\(1≤ k ≤ 100\)
解题思路 :
通过观察可以发现当 \(k\) 为偶数的时候必然无解
证明:先假设当 \(k\) 是偶数的时候可以构造出来。 那么对于这张图的每一条桥边,必然连接这两个联通块,那么单独考虑这两个联通块,有且仅有一个端点的度数是 \(k - 1\) ,其他点的度数都是 \(k\) 所以这个联通块的总度数为 \(kx - 1 (x > 0 )\) 因为k是偶数,所以总度数为奇数。但是对于任意一个无向图,它的度数之和都是偶数,所以产生矛盾,当 \(k\) 为偶数的情况下不存在解
考虑当 \(k\) 是奇数的时候如何构造这张图。
观察发现桥边的条数并不影响构造,所以可以只构造一条桥边的情况
问题就转化为构造两个子图,有一个点的度数为 \(k - 1\) 其余点的度数都为 \(k\)
按照这个方式画出 \(k = 3\) 的情况如下

观察发现,对于每一个联通块,有 \(k-1\) 个点连向桥边端点,对于这 \(k-1\) 个点,每个点都连向另外 \(k-1\) 个点
由于 \(k\) 是奇数,\(k - 1\) 是偶数,所以另外 \(k - 1\) 个点可以相邻两两连边产生额外 \(1\) 的度数
加上连向桥边的 \(k - 1\) 个点提供的度数刚好是 \(k\) 所以按照 \(k = 3\) 的情况画可以推广到所有 \(k\) 是奇数的情况
由此可以得出构建方法 :
先构建一条桥边,对于两个端点分别做同样操作:
新建 \(k-1\) 个点,每个点向端点连边
再新建 \(k - 1\) 个点,每个点向相邻的点连边
对于两层点形成的二分图,两两之间连边
/*program by mangoyang*/
#include<bits/stdc++.h>
#define inf (0x7f7f7f7f)
#define Max(a, b) ((a) > (b) ? (a) : (b))
#define Min(a, b) ((a) < (b) ? (a) : (b))
typedef long long ll;
using namespace std;
template <class T>
inline void read(T &x){
int f = 0, ch = 0; x = 0;
for(; !isdigit(ch); ch = getchar()) if(ch == '-') f = 1;
for(; isdigit(ch); ch = getchar()) x = x * 10 + ch - 48;
if(f) x = -x;
}
vector<int> g[100005]; int m, k;
inline void makemid(int type){
int rt = 1 + type;
for(int i = 1; i < k; i++) g[rt].push_back(rt + i), m++;
for(int i = rt + 1; i < rt + k; i++)
for(int j = rt + k; j < rt + 2 * k - 1; j++) g[i].push_back(j), m++;
for(int j = rt + k; j < rt + 2 * k - 1; j += 2) g[j].push_back(j + 1), m++;
}
int main(){
read(k);
if(k % 2 == 0) return puts("NO"), 0;
makemid(0), makemid(2 * k - 1); g[1].push_back(2 * k), m++;
puts("YES");
cout << 4 * k - 2 << " " << m << endl;
for(int i = 1; i <= 4 * k - 2; i++)
for(int j = 0; j < g[i].size(); j++) cout << i << " " << g[i][j] << endl;
return 0;
}
Codeforces 550 D. Regular Bridge的更多相关文章
- D. Regular Bridge 解析(思維、圖論)
Codeforce 550 D. Regular Bridge 解析(思維.圖論) 今天我們來看看CF550D 題目連結 題目 給你一個\(k\le100\),請構造出一個至少有一個Bridge的,每 ...
- Codeforces Round #306 (Div. 2) D. Regular Bridge 构造
D. Regular Bridge Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/contest/550/pro ...
- Codeforces 550D —— Regular Bridge——————【构造】
Regular Bridge time limit per test 2 seconds memory limit per test 256 megabytes input standard inp ...
- cf#306D. Regular Bridge(图论,构图)
D. Regular Bridge time limit per test 2 seconds memory limit per test 256 megabytes input standard i ...
- Codeforces #550 (Div3) - G.Two Merged Sequences(dp / 贪心)
Problem Codeforces #550 (Div3) - G.Two Merged Sequences Time Limit: 2000 mSec Problem Description T ...
- cf550D Regular Bridge
Regular Bridge An undirected graph is called k-regular, if the degrees of all its vertices are equal ...
- 「日常训练」Regular Bridge(Codeforces Round 306 Div.2 D)
题意与分析 图论基础+思维题. 代码 #include <bits/stdc++.h> #define MP make_pair #define PB emplace_back #defi ...
- codeforces #550D Regular Bridge 构造
题目大意:给定k(1≤k≤100),要求构造一张简单无向连通图,使得存在一个桥,且每一个点的度数都为k k为偶数时无解 证明: 将这个图缩边双,能够得到一棵树 那么一定存在一个叶节点,仅仅连接一条桥边 ...
- Codeforces 5C Longest Regular Bracket Sequence(DP+括号匹配)
题目链接:http://codeforces.com/problemset/problem/5/C 题目大意:给出一串字符串只有'('和')',求出符合括号匹配规则的最大字串长度及该长度的字串出现的次 ...
随机推荐
- 【BZOJ】2705: [SDOI2012]Longge的问题
[题意]给定n,求∑gcd(i,n),(1<=i<=n),n<=2^32 [算法]数论(欧拉函数,gcd) [题解]批量求gcd的题目常常可以反过来枚举gcd的值. 记f(g)为gc ...
- 【HDU】3068 最长回文
[算法]manacher [题解][算法]字符串 #include<cstdio> #include<algorithm> #include<cstring> us ...
- FZUOJ 2205 据说题目很水 (无三元环图最大边数)
Problem Description Sunday最近对图论特别感兴趣,什么欧拉回路什么哈密顿回路,又是环又是树.在看完一本书后,他对自己特别有信心,便找到大牛牛犇犇,希望他出一题来考考自己. 在遥 ...
- js跨域上传文件 iframe
封装好的jq插件 (function () { var iframe = '<iframe name="jqUploadIframe" style="display ...
- MapperScannerConfigurer不 property-placeholder
关于org.mybatis.spring.mapper.MapperScannerConfigurer不支持 property-placeholder 参考了http://www.oschina.ne ...
- Android控件——监听按钮的点击事件
aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAroAAAFTCAIAAABZPDiZAAAgAElEQVR4nOy9918UWfb///1jdu2uBs
- sk_buff结构
sk_buff结构用来描述已接收或者待发送的数据报文信息:skb在不同网络协议层之间传递,可被用于不同网络协议,如二层的mac或其他链路层协议,三层的ip,四层的tcp或者udp协议,其中某些成员变量 ...
- java===字符串常用API介绍(转)
本文转自:http://blog.csdn.net/crazy_kid_hnf/article/details/55102861 字符串基本操作 1.substring(from,end)(含头不含尾 ...
- sicily 1020. Big Integer
Description Long long ago, there was a super computer that could deal with VeryLongIntegers(no VeryL ...
- Oracle 内存管理
--内存分配建库时可以先分配系统内存的50%-80%给Oracle,后期根据业务再进行调整.SGA.PGA分配比例:OLTP:SGA %80 , PGA %20OLAP:SGA %50 , PGA % ...