hackerrank DFS Edges
题意:要求构造一个图,使其dfs树中有t条树边,b条返祖边,f条前向边,c条其他边。
膜了题解才会,好神啊。
考虑所有结点的深度之和,这个值必须介于$[max(b,f+t),C^{2}_{n}-c]$之间。按照这个构造树以后就容易了。
#include<vector>
#include<cstdio>
#include<algorithm>
#define MN 110000
using namespace std; int n,t,b,f,c,to[MN],top,mi;
vector<int> v[MN],e[MN];
void dfs(int x){
to[++top]=x;
for (int i=;i<top&&b;i++) e[x].push_back(to[i]),b--;
for (int i=;i<top-&&f;i++) e[to[i]].push_back(x),f--;
for (int i=;i<v[x].size();i++) dfs(v[x][i]);
top--;
}
void DFS(int x){
to[++top]=x;
for (int i=;i<v[x].size();i++) DFS(v[x][i]);
}
void _DFS(int x){
for (int i=;i<=top&&c;i++) e[x].push_back(to[i]),c--;
for (int i=;i<v[x].size();i++) _DFS(v[x][i]);
}
int main(){
scanf("%d%d%d%d",&t,&b,&f,&c);n=t+;
mi=max(b,f+t);
if (1LL*n*(n-)/-c<mi) return puts("-1"),;
to[top=]=;
for (int i=;i<=n;i++){
int s=min(mi-(n-i),top);
mi-=s;v[to[s]].push_back(i);
if (s==top) to[++top]=i;
}
top=;
dfs();
for (int i=;i<=n&&c;i++){
for (int j=;j<v[i].size()&&c;j++){
top=;
for (int k=;k<j;k++) DFS(v[i][k]);
_DFS(v[i][j]);
}
}
printf("%d\n",n);
for (int i=;i<=n;i++){
printf("%d",v[i].size()+e[i].size());
for (int j=;j<v[i].size();j++) printf(" %d",v[i][j]);
for (int j=;j<e[i].size();j++) printf(" %d",e[i][j]);puts("");
}
}
hackerrank DFS Edges的更多相关文章
- [luogu P3787][新创无际夏日公开赛] 冰精冻西瓜 [树状数组][dfs序]
题目背景 盛夏,冰之妖精琪露诺发现了一大片西瓜地,终于可以吃到美味的冻西瓜啦. 题目描述 琪露诺是拥有操纵冷气程度的能力的妖精,一天她发现了一片西瓜地.这里有n个西瓜,由n-1条西瓜蔓连接,形成一个有 ...
- 链式前向星DFS
本文链接:http://www.cnblogs.com/Ash-ly/p/5399057.html 采用链式前向星存图的DFS: #include <iostream> #include ...
- HDU 4280Island Transport(Dinc非STL 模板)
题意: n岛m条路,然后是 n个岛的坐标,然后是m条双向路,包括 岛和 岛 之间 最大客流量,让求 最左边的岛 到右边的岛 最大客流量 分析: 建图 以 左边的岛为原点,最右边的为终点求最大客流量. ...
- 【Python排序搜索基本算法】之深度优先搜索、广度优先搜索、拓扑排序、强联通&Kosaraju算法
Graph Search and Connectivity Generic Graph Search Goals 1. find everything findable 2. don't explor ...
- Codeforces Round #288 (Div. 2)D. Tanya and Password 欧拉通路
D. Tanya and Password Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/contest/508 ...
- POJ2230 Watchcow【欧拉回路】
Watchcow Time Limit: 3000MS Memory Limit: 65536K Total Submissions: 6172Accepted: 2663 Special Judge ...
- 后缀自动机/回文自动机/AC自动机/序列自动机----各种自动机(自冻鸡) 题目泛做
题目1 BZOJ 3676 APIO2014 回文串 算法讨论: cnt表示回文自动机上每个结点回文串出现的次数.这是回文自动机的定义考查题. #include <cstdlib> #in ...
- [vijos 1642]班长的任务 [树形dp]
背景 十八居士的毕业典礼(1) 描述 福州时代中学2009届十班同学毕业了,于是班长PRT开始筹办毕业晚会,但是由于条件有限,可能每个同学不能都去,但每个人都有一个权值,PRT希望来的同学们的权值总和 ...
- [luogu P1967][NOIp2013] 货车运输
题目描述 A 国有 n 座城市,编号从 1 到 n,城市之间有 m 条双向道路.每一条道路对车辆都有重量限制,简称限重.现在有 q 辆货车在运输货物, 司机们想知道每辆车在不超过车辆限重的情况下,最多 ...
随机推荐
- KVO的内部实现以及使用
转载自:http://www.cocoachina.com/applenews/devnews/2014/0107/7667.html KVO是实现Cocoa Bindings的基础,它提供了一种 ...
- three.js实现3D模型展示
由于项目需要展示3d模型,所以对three做了点研究,分享出来 希望能帮到大家 先看看效果: three.js整体来说 不是很难 只要你静下心来研究研究 很快就会上手的 首先我们在页面上需要创建一个能 ...
- Mybatis-----优化配置文件,基于注解CR
这篇主要写配置文件的优化,例如 jdbc.properties 配置文件 ,引入数据库的文件,例如driver,url,username,password 等,然后在 SqlMapConfig.x ...
- 【Zookeeper】源码分析之服务器(五)之ObserverZooKeeperServer
一.前言 前面分析了FollowerZooKeeperServer,接着分析ObserverZooKeeperServer. 二.ObserverZooKeeperServer源码分析 2.1 类的继 ...
- JS画几何图形之二【圆】
半径为r的圆上的点p(x,y)与圆心O(x0,y0)的关系: x = x0+rcosA; y = y0+rsinA ,A为弧度 样例:http://www.zhaojz.com.cn/demo/dr ...
- php-删除非空目录
function deldir($path){ if(!is_dir($path)){ return false; } $dh = opendir($path); while(($file = rea ...
- php示例的错误记录
最近几天在测试php的mvc,从网上找到几个示例. 先学习这一篇,http://www.cnblogs.com/q1ng/p/4529496.html 标题是 PHP的MVC框架 深入解析,其实是最 ...
- shader 2 : use shaderToy in unity
shadertoy 原型,https://www.shadertoy.com/view/XslGRr 先说几个概念 Shader language目前有3种主流语言:基于OpenGL的GLSL(Ope ...
- Django学习日记03_模型_Fields
创建模型 模型对应工程中的应用,一个工程可能包含很多的应用,通过命令 python manage.py startapp myapp 创建一个叫myapp的应用,django会帮助生成以下目录: po ...
- XUL透明异形旋转窗体
200行不到的代码,实现透明异形旋转窗体. 下载(25MB): http://oltag.com:8080/yaolixing/18/11/00/OHUIv52.0.1_3_webTrans20180 ...