题目大意:给定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. .NET Core Runtime ARM32 builds now available

    原文地址:传送门 .NET Core Runtime ARM32 builds now available The .NET Core team is now producing ARM32 buil ...

  2. JDBC连接池(数据源)

    自定义连接池:用装饰设计模式将原连接的close方法改造成将连接还回数据源:装饰设计模式:http://www.cnblogs.com/tongxuping/p/6832518.html: 开源数据库 ...

  3. Jquery EasyUI选项卡-Tabs的使用方法

    以下是easyUI的tabs的简单实用介绍. var e =$('#main').tabs('exists','accordion'); if(e==true){  $('#main').tabs(' ...

  4. HDU 3342 拓扑排序模板

    Legal or Not Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total ...

  5. codeforces 869A The Artful Expedient【暴力枚举/亦或性质】

    A. time limit per test 1 second memory limit per test 256 megabytes input standard input output stan ...

  6. Web CI过程中的Security解决方案

    http://www.infoq.com/cn/articles/WebScan-CI 一. 当前Web应用安全现状 随着中国互联网金融的爆发和繁荣,Web应用在其中扮演的地位也越来越重要,比如Web ...

  7. 记录(Record)

    记录有可以被称为行(Row),可以通俗的认为它是数据表中的一行数据.以员工表为例,一个公司的员工表中的数据是这样的: 这里每一行数据就代表一个员工的资料,这样的一行数据就叫做一条记录.表是由行和列组成 ...

  8. [LOJ6433]最大前缀和

    深刻感受到自己的水平和机房里的其他人相差甚远,他们都是随手秒这个题的... $n$很小,考虑状压DP 当一个序列在某个位置取到最大前缀和后,意味着如果把后面的数抽出来单独成序列,那么它的每个前缀和都$ ...

  9. [xsy2164]theory

    又积累了一个网络流模型:最大权闭合子图,相关证明去看论文,感觉自己不是很懂证明,但现在还是先把建模记下来再说吧 枚举一个点,硬点它一定要被选中,那么以它为根,如果选了$x$就必须要选$fa_x$,这就 ...

  10. iOS开发技巧——关闭Autoresizing开启Autolayout

    在使用Autolayout时有时候会有莫名其妙的错误,是因为UIView是默认同时开启Autoresizing和Autolayout的. 但我们的Autolayout很容易和Autoresizing冲 ...