[2015hdu多校联赛补题]hdu5302 Connect the Graph
题目链接: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<int> w(), b();
for(int i=; i<; i++) scanf("%d", &w[i]);
for(int i=; i<; i++) scanf("%d", &b[i]);
if((w[] & ) || (b[] & )) {
puts("-1"); continue;
}
int n=w[]+w[]+w[];
if(n<=) {
puts("4\n1 2 0\n1 3 0\n2 3 1\n3 4 1"); continue;
}
int m1=w[]+w[]/;
int m2=b[]+b[]/;
printf("%d\n", m1+m2);
int nw=;
w[]++;
while(w[]--) {
printf("%d %d 0\n", nw, nw+); nw++;
}
w[]-=; nw++;
while(w[]) {
printf("%d %d 0\n", nw, nw+); nw+=;
w[]-=;
}
vector<int> table(n+);
int pos=;
for(int i=; i<=n; i+=) table[pos++]=i;
for(int i=; i<=n; i+=) table[pos++]=i;
int nb=;
b[]++;
while(b[]--) {
printf("%d %d 1\n", table[nb], table[nb+]); nb++;
}
b[]-=; nb++;
while(b[]) {
printf("%d %d 1\n", table[nb], table[nb+]); nb+=;
b[]-=;
}
}
return ;
}
hdu5302
[2015hdu多校联赛补题]hdu5302 Connect the Graph的更多相关文章
- [2015hdu多校联赛补题]hdu5384 Danganronpa
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5384 题意:函数f(A, B)定义:A.B为字符串,f(A, B)为A中有多少个不同的B(ex:f(& ...
- [2015hdu多校联赛补题]hdu5301 Buildings
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5301 题目大意:给你一块由1x1方格组成的矩形区域,其中有且仅有一个坏块,现在你要在上面建矩形的房子, ...
- [2015hdu多校联赛补题]hdu5378 Leader in Tree Land
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5378 题意:给你一棵n个结点的有根树.因为是有根树,那么每个结点可以指定以它为根的子树(后面讨论的子树 ...
- [2015hdu多校联赛补题]hdu5372 Segment Game
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5372 题意:进行n次操作,操作分两种,0和1,每一个0操作按出现顺序有一个编号(从1开始 0操作 0 ...
- [2015hdu多校联赛补题]hdu5371 Hotaru's problem
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5371 题意:把一个数字串A翻过来(abc翻过来为cba)的操作为-A,我们称A-AA这样的串为N-se ...
- [2015hdu多校联赛补题]hdu5303 Delicious Apples
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5303 题意:在一个长为L的环形路径上种着一些苹果树,告诉你苹果树的位置(题目中以0~L指示坐标)及苹果 ...
- [2015hdu多校联赛补题]hdu5299 Circles Game
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5299 题意: 在欧几里得平面上有n个圆,圆之间不会相交也不会相切,现在Alice和Bob玩游戏,两人轮 ...
- [2015hdu多校联赛补题]hdu5348 MZL's endless loop
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5348 题意:给你一个无向图,要你将无向图的边变成有向边,使得得到的图,出度和入度差的绝对值小于等于1, ...
- [2015hdu多校联赛补题]hdu5324 Boring Class
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5324 题意:给你一个二维的序列,让你找出最长的第一维升第二维降的子序列(如果多个答案,输出字典序最小) ...
随机推荐
- 基于MVC4+EasyUI的Web开发框架形成之旅--总体介绍
最近花了很多时间在重构和进一步提炼Winform开发框架的工作上,加上时不时有一些项目的开发工作,我博客里面介绍Web开发框架的文章比较少,其实以前在单位工作,80%的时间是做Web开发的,很早就形成 ...
- [redis] redis.clients.jedis.exceptions.JedisDataException: MOVED 13102 127.0.0.1
这个异常上网查了很久才知道原因: MOVED indicates that you're using Redis Cluster. ShardedJedis is not for Redis Clus ...
- LuManager 2.0.97 设置shopex 手机版waptouch,绑定二级目录
1.步骤,先要把主站的 限制目录访问那个勾选,去掉 2.创建新网站,不需要ftp,直接设置网站目录“/home/主站目录/waptouch” 3.保存
- WS-Security
ylbtech-Miscellaneos: WS-Security A,返回顶部 1, WS-Security (Web服务安全) 是一种提供在Web服务上应用安全的方法的网络传输协议. 2004年4 ...
- 用WinDbg调试Windows和驱动程序
由于本人能力有限,翻译不足之处敬请谅解,欢迎批评指正:sunylat@163.com MSDN原文:https://msdn.microsoft.com/zh-cn/library/windows/h ...
- List与字符串转换
1.将list元素用单引号引起来:List<TransferFocusxfSummaryTop3> topList = getTransferFocusxfSummaryTop3(user ...
- Angular学习
一.Angular是什么 基于JS的框架,类似JQuery,利用数据绑定和依赖注入实现页面数据的渲染,无需人为写大量的JS,减少了代码量,优美了代码. 二.Angular优缺点 Angular适用与C ...
- “请运行Chkdsk工具”怎么解决
今天重新系统,想从移动硬盘中拷贝数据,但是老是提示:“请运行Chkdsk工具” 于是在百度搜索一下,有人提供的解决方案很不错,在些引用一下,以备忘! 电脑上经常遇到这样的提示“某某某文件已损坏且无法读 ...
- HTML&CSS学习笔记(一)
1.role=xxx 用于ARIA,屏幕阅读器识别,ARIA 是 W3C Web 无障碍倡议 (WAI) 的一部分,它定义使 Web 内容和 Web 应用程序更易于访问的方式. ARIA 用于提高使用 ...
- xfce 双击窗口标题栏无法最大化解决办法
From: http://hi.baidu.com/jhang20081616/item/0b36ca1d2137df592b3e2219 0.前提是已经在window manager里设置了doub ...