题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5302

题意:给你一个无向图,它的边要么是黑色要么是白色,且图上的每个点最多与两个黑边两个白边相连。现在,Demon将图分成两部分,一部分包含所有的黑边,另一部分包括所有的白边,给你白边图中度为0的点的数量w0,度为1的点数w1,度为2的点数w2,与黑边图中度为0的点数b1,度为1的点数b1,度为2的点数b2,要你输出任意一个符合条件的原图,如果不能,输出-1

(注1:无论是黑边图,还是白边图,给出的度为0、1、2三种点的数量均>=1;

 注2:w0+w1+w2==b0+b1+b2,输出图的点数最多为w0+w1+w2个;

 注3:图中无重边,无自环;

解:构造题

考虑每条边对应两度,那么w1或b1为奇数一定无解

排除以上情况,有w1>=2 && b1>=2,将二度的点排成一排,顺次链接起来,然后将首尾分别和一个一度点相连,剩下的一度点两两互相连接即可

这样我们就可以解决黑图或白图,考虑上述构造方法每个点只和相邻的点连接,我们在构造完一图之后,另外一图只需要稍微打乱下点的顺序即可

for example:

1 2 3 4 5 -> 1 4 2 5 3

另外n==4的时候需要特判一下。。。

 /*
  * Problem: hdu5302 Connect the Graph
  * Author:  SHJWUDP
  * Created Time:  2015/8/10 星期一 19:24:32
  * File Name: 1006.cpp
  * State: Accepted
  * Memo: 构造
  */
 #include <iostream>
 #include <cstdio>
 #include <vector>
 #include <cstring>
 #include <algorithm>

 using namespace std;

 int main() {
 #ifndef ONLINE_JUDGE
     freopen("in", "r", stdin);
     //freopen("out", "w", stdout);
 #endif
     int T;
     scanf("%d", &T);
     while(T--) {
         vector<), b();
         ; i<; i++) scanf("%d", &w[i]);
         ; i<; i++) scanf("%d", &b[i]);
         ] & ) || (b[] & )) {
             puts("-1"); continue;
         }
         ]+w[]+w[];
         ) {
             puts("4\n1 2 0\n1 3 0\n2 3 1\n3 4 1"); continue;
         }
         ]+w[]/;
         ]+b[]/;
         printf("%d\n", m1+m2);
         ;
         w[]++;
         ]--) {
             printf(); nw++;
         }
         w[]-=; nw++;
         ]) {
             printf(); nw+=;
             w[]-=;
         }
         vector<);
         ;
         ; i<=n; i+=) table[pos++]=i;
         ; i<=n; i+=) table[pos++]=i;
         ;
         b[]++;
         ]--) {
             printf(]); nb++;
         }
         b[]-=; nb++;
         ]) {
             printf(]); nb+=;
             b[]-=;
         }
     }
     ;
 }

hdu5302

[2015hdu多校联赛补题]hdu5302 Connect the Graph的更多相关文章

  1. [2015hdu多校联赛补题]hdu5384 Danganronpa

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5384 题意:函数f(A, B)定义:A.B为字符串,f(A, B)为A中有多少个不同的B(ex:f(& ...

  2. [2015hdu多校联赛补题]hdu5301 Buildings

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5301 题目大意:给你一块由1x1方格组成的矩形区域,其中有且仅有一个坏块,现在你要在上面建矩形的房子, ...

  3. [2015hdu多校联赛补题]hdu5378 Leader in Tree Land

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5378 题意:给你一棵n个结点的有根树.因为是有根树,那么每个结点可以指定以它为根的子树(后面讨论的子树 ...

  4. [2015hdu多校联赛补题]hdu5372 Segment Game

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5372 题意:进行n次操作,操作分两种,0和1,每一个0操作按出现顺序有一个编号(从1开始 0操作 0 ...

  5. [2015hdu多校联赛补题]hdu5371 Hotaru&#39;s problem

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5371 题意:把一个数字串A翻过来(abc翻过来为cba)的操作为-A,我们称A-AA这样的串为N-se ...

  6. [2015hdu多校联赛补题]hdu5303 Delicious Apples

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5303 题意:在一个长为L的环形路径上种着一些苹果树,告诉你苹果树的位置(题目中以0~L指示坐标)及苹果 ...

  7. [2015hdu多校联赛补题]hdu5299 Circles Game

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5299 题意: 在欧几里得平面上有n个圆,圆之间不会相交也不会相切,现在Alice和Bob玩游戏,两人轮 ...

  8. [2015hdu多校联赛补题]hdu5348 MZL&#39;s endless loop

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5348 题意:给你一个无向图,要你将无向图的边变成有向边,使得得到的图,出度和入度差的绝对值小于等于1, ...

  9. [2015hdu多校联赛补题]hdu5324 Boring Class

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5324 题意:给你一个二维的序列,让你找出最长的第一维升第二维降的子序列(如果多个答案,输出字典序最小) ...

随机推荐

  1. web自动化工具-liveStyle

    web自动化工具-liveStyle LiveStyle. The first bi-directional real-time edit tool for CSS, LESS and SCSS主要用 ...

  2. 敏捷开发与jira之阶段工作项概述

    每次迭代都分这5个阶段,但每个阶段的时间根据版本情况定,最终目标是:第一个阶段拿到交付范围,在第五个阶段都完成,并拿到本次版本团队所消耗的工时. Jira是项目过程管理的一种手段,跟多体现在工时跟踪, ...

  3. 从零开始学习Node.js例子一 http get和post

    httpserverrequestget.js /* 获取GET请求内容 由于GET请求直接被嵌入在路径中,URL是完整的请求路径,包括了?后面的部分,因此你可以手动解析后面的内容作为GET请求的参数 ...

  4. SLF4简介

    The Simple Logging Facade for Java (SLF4J) serves as a simple facade or abstraction for various logg ...

  5. mvc3在window 7 iis7下以及 xp iis 5.1下的部署 ,asp.net MVC3无法打开项目文件E:/我们的项目/Project/HeatingMIS.Web/HeatingMIS.Web.csproj”。此安装不支持该项目类型。

    今天,小白来总结一下我在is上部署mvc3 .net 网站的时候的过程和遇到的问题. 其实,mvc的网站的部署跟平常的网站的部署都是一样的,只是下面有一些需要注意的地方. 1.应用程序池采用集成模式( ...

  6. C语言初学者代码中的常见错误与瑕疵(14)

    见:C语言初学者代码中的常见错误与瑕疵(14) 相关链接:http://www.anycodex.com/blog/?p=87

  7. var isObj = length === undefined || i

    这个其实是因为你前面那个===是肯定为false导致的,所以执行到了i那一步了var length=undefined;var a=length===undefined || i;这样你不定义i也是不 ...

  8. 多重背包问题II

    多重背包问题II 总体积是m,每个小物品的体积是A[i] ,每个小物品的数量是B[i],每个小物品的价值是C[i] 求能够放入背包内的最大物品能够获得的最大价值 和上一个很类似 上一题体积就是价值,这 ...

  9. Redis学习手册(String数据类型)

    一.概述: 字符串类型是Redis中最为基础的数据存储类型,它在Redis中是二进制安全的,这便意味着该类型可以接受任何格式的数据,如JPEG图像数据或Json对象描述信息等.在Redis中字符串类型 ...

  10. hadoop 2.2.0 eclipse 插件编译 及相关eclipse配置图解

    https://github.com/winghc/hadoop2x-eclipse-plugin 官网 http://kangfoo.github.io/article/2013/12/build- ...