题目大意:给定k(1≤k≤100),要求构造一张简单无向连通图,使得存在一个桥,且每一个点的度数都为k

k为偶数时无解

证明:

将这个图缩边双,能够得到一棵树

那么一定存在一个叶节点,仅仅连接一条桥边

那么这个边双内部全部点度数之和为偶数 除掉连出去的桥边外度数之和为奇数 故不合法

然后k为奇数的时候我们仅仅须要构造两个对称的边双被一条桥边连接的图即可了

因为每一个点度数为k。因此每一边至少须要k+1个点

可是k+1个点奇偶性不合法。因此每一边至少须要k+2个点

如今问题转化成了给定一个度数数组要求构造一张原图

这个在Wc2015讲过 每次找剩余的度数最大的点

如果这个点的度数为d 那么仅仅须要向其他度数最大的d个点连边即可

#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
#define M 110
using namespace std;
struct edge{
int x,y;
edge() {}
edge(int _,int __):
x(_),y(__) {}
}stack[10100];
int k,top;
int degree[M],a[M];
bool Compare(int x,int y)
{
return degree[x] > degree[y] ;
}
int main()
{
int i,j;
cin>>k;
if(~k&1)
return puts("NO"),0;
puts("YES");
if(k==1)
return puts("2 1\n1 2"),0;
cout<<(k+2<<1)<<' '<<((k+2)*k)<<endl;
int n=k+2;
for(degree[1]=k-1,i=2;i<=n;i++)
degree[i]=k;
for(i=1;i<=n;i++)
a[i]=i;
for(i=1;i<=n;i++)
{
sort(a+1,a+n+1,Compare);
for(j=2;j<=degree[a[1]]+1;j++)
{
stack[++top]=edge(a[1],a[j]);
degree[a[j]]--;
}
degree[a[1]]=0;
}
for(i=1;i<=top;i++)
{
printf("%d %d\n",edges[i].x,edges[i].y);
printf("%d %d\n",edges[i].x+n,edges[i].y+n);
}
printf("%d\n",1,n+1);
return 0;
}

codeforces #550D Regular Bridge 构造的更多相关文章

  1. Codeforces 550D —— Regular Bridge——————【构造】

     Regular Bridge time limit per test 2 seconds memory limit per test 256 megabytes input standard inp ...

  2. 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 ...

  3. cf550D. Regular Bridge(构造)

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

  4. Codeforces 550 D. Regular Bridge

    \(>Codeforces \space 550 D. Regular Bridge<\) 题目大意 :给出 \(k\) ,让你构造出一张点和边都不超过 \(10^6\) 的无向图,使得每 ...

  5. cf550D Regular Bridge

    Regular Bridge An undirected graph is called k-regular, if the degrees of all its vertices are equal ...

  6. cf#306D. Regular Bridge(图论,构图)

    D. Regular Bridge time limit per test 2 seconds memory limit per test 256 megabytes input standard i ...

  7. D. Regular Bridge 解析(思維、圖論)

    Codeforce 550 D. Regular Bridge 解析(思維.圖論) 今天我們來看看CF550D 題目連結 題目 給你一個\(k\le100\),請構造出一個至少有一個Bridge的,每 ...

  8. 「日常训练」Regular Bridge(Codeforces Round 306 Div.2 D)

    题意与分析 图论基础+思维题. 代码 #include <bits/stdc++.h> #define MP make_pair #define PB emplace_back #defi ...

  9. Codeforces 1383D - Rearrange(构造)

    Codeforces 题面传送门 & 洛谷题面传送门 一道不算困难的构造,花了一节英语课把它搞出来了,题解简单写写吧( 考虑从大往小加数,显然第三个条件可以被翻译为,每次加入一个元素,如果它所 ...

随机推荐

  1. sublime text3插件TrailingSpaces无法使用的解决方法

    TrailingSpaces是很好用的一款插件,可以清除代码结尾打多了几个空格或Tab,对于代码洁癖绝对是个福音,我的sublime text3本来安装了这款插件,也可以正常使用,今天突然不能用了,即 ...

  2. Nodejs调用Aras Innovator服务,处理AML并返回AML

    公司已经布署了Aras Innovator服务器,如果需要与Aras Innovator进行交互,需要进行自主开发程序,例如使用C#.VB.Java等,都是可以与它进行交互的 C#:调用Aras In ...

  3. (6)python 循环控制

    一.if语句 1.条件执行和if语句 2.else子句 3.elif子句 多个检查条件时 4.嵌套代码  5.空语句 使用pass占位 6.断言 关键字 assert 判断表达式前加上这个关键字表示, ...

  4. HDU 多校1.12

  5. 将csv格式的数据文件导入/导出数据库+添加新的字段

    最近一直忙于实验室的事情,没有好好更新博客,在抓包的过程中,遇到了很多问题. 因为我常用Wireshark将抓包信息导出为csv文件,这里简单mark一下将csv文件导入/导出到数据库的2种方法: 一 ...

  6. ASP.NET Core 2.2 基础知识(十六) SignalR 概述

    我一直觉得学习的最好方法就是先让程序能够正常运行,才去学习他的原理,剖析他的细节. 就好像这个图: 所以,我们先跟着官方文档,创建一个 SignalR 应用: https://docs.microso ...

  7. 算法-桶排序(Bucket sort)

    本文由@呆代待殆原创,转载请注明出处. 简介:这个排序算法不属于比较排序,在平均情况下他的时间代价是O(n),并且它假设它的输入数据均匀的分布在一个固定的区间里. 思路:桶排序假设他的输入均匀的分布在 ...

  8. 【二分图】【最大匹配】【匈牙利算法】洛谷 P2071 座位安排 seat.cpp/c/pas

    ∵每个座位可以坐俩人,所以拆点最大匹配. #include<cstdio> #include<vector> #include<cstring> using nam ...

  9. python3 开发面试题(去重保持原来的顺序)6.2

    """ l1 = [11, 2, 3, 22, 2, 4, 11, 3] 去重并保持原来的顺序 """ #方式一 for 循环方法 l1 = ...

  10. 【R笔记】给R加个编译器——notepad++

    R的日记-给R加个编译器 转载▼ R是一款强大免费且开源的统计分析软件,这是R的长处,可也是其“缺陷”的根源:不似商业软件那样user-friendly.记得初学R时,给我留下最深印象的不是其功能的强 ...