题目大意:给定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. [libgdx游戏开发教程]使用Libgdx进行游戏开发(11)-高级编程技巧 Box2d和Shader

    高级编程技巧只是相对的,其实主要是讲物理模拟和着色器程序的使用. 本章主要讲解利用Box2D并用它来实现萝卜雨,然后是使用单色着色器shader让画面呈现单色状态:http://files.cnblo ...

  2. HDU 1532.Drainage Ditches-网络流最大流

    Drainage Ditches Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) ...

  3. android9.0请求异常

    抛出异常:CLEARTEXT communication to not permitted by network security policy android 9开始默认不能使用http 1.在re ...

  4. 洛谷 P1570 KC喝咖啡【二分答案/最大化平均值模板】

    题目描述 话说KC和SH在福州的时候常常跑去85°C喝咖啡或者其他的一些什么东西. 这天,KC想要喝一杯咖啡,服务员告诉他,现在有n种调料,这杯咖啡只可以加入其中的m种(当然KC一定会加入m种,不会加 ...

  5. POJ 2255 Tree Recovery && Ulm Local 1997 Tree Recovery (二叉树的前中后序遍历)

    链接:poj.org/problem?id=2255 本文链接:http://www.cnblogs.com/Ash-ly/p/5463375.html 题意: 分别给你一个二叉树的前序遍历序列和中序 ...

  6. 选择快速源来加速linux系统更新

    sudo pacman-mirrors -c China -g 引用自manjaro百度贴吧

  7. 1.10(java学习笔记)super关键字

    supe主要是调用父类中被重写的方法及属性. 用下列代码那说明: package cn.hcf.TestSuper; public class TestSuper { public static vo ...

  8. Bootstrap-table自定义可编辑每页显示记录数

    写在前面: 最近在做的person功能,由于后期系统中person人数较多,不利用查找person,故需求方将要求可以自己编辑每页显示的数目,而不是固定的写死每页显示的数目. 下面先来看下bootsr ...

  9. 关于Hadoop_env.sh中的HADOOP_CLASSPATH

    之前博客里介绍了如何自定义DoubleArrayWritable,并将该类型的value写入SequenceFile文件中,为了能够使用命令查看这个文件中的内容(果然坑都是一步一步给自己挖的)参考了网 ...

  10. 【InteillJ IDEA】Git的安装+同步项目到GitHub上

    需要的工具: 1.InteillJ IDEA 2.Git 3.GitHub帐号 步骤: 1.下载Git 下载地址:https://git-scm.com/downloads 安装完成后 勾选Launc ...