codeforces781C Underground Lab
本文版权归ljh2000和博客园共有,欢迎转载,但须保留此声明,并给出原文链接,谢谢合作。
本文作者:ljh2000
作者博客:http://www.cnblogs.com/ljh2000-jump/
转载请注明出处,侵权必究,保留最终解释权!
题目链接:codeforces781C Underground Lab
正解:生成树+欧拉序列
解题报告:
很容易发现,原图和图的一棵生成树其实是等价的,都是需要遍历全图,是一个类似于$dfs$的东西。
欧拉序列正可以满足题目所给的性质,所以我只要搞出一棵原图的生成树,然后把欧拉序列分成$k$段即可。
//It is made by ljh2000
#include <iostream>
#include <cstdlib>
#include <cstring>
#include <cstdio>
#include <cmath>
#include <algorithm>
#include <ctime>
#include <vector>
#include <queue>
#include <map>
#include <set>
#include <string>
#include <complex>
using namespace std;
typedef long long LL;
typedef long double LB;
typedef complex<double> C;
const double pi = acos(-1);
const int MAXN = 200011;
const int MAXM = 400011;
int n,m,k,father[MAXN],ecnt,first[MAXN],next[MAXM],to[MAXM];
int dfn[MAXN*2],cnt,ans[MAXN],out;
inline int find(int x){ if(father[x]!=x) father[x]=find(father[x]); return father[x]; }
inline void link(int x,int y){ next[++ecnt]=first[x]; first[x]=ecnt; to[ecnt]=y; }
inline int getint(){
int w=0,q=0; char c=getchar(); while((c<'0'||c>'9') && c!='-') c=getchar();
if(c=='-') q=1,c=getchar(); while (c>='0'&&c<='9') w=w*10+c-'0',c=getchar(); return q?-w:w;
} inline void dfs(int x,int fa){
dfn[++cnt]=x;
for(int i=first[x];i;i=next[i]) {
int v=to[i]; if(v==fa) continue;
dfs(v,x);
dfn[++cnt]=x;
}
} inline void work(){
n=getint(); m=getint(); k=getint(); int x,y;
for(int i=1;i<=n;i++) father[i]=i;
for(int i=1;i<=m;i++) {
x=getint(); y=getint();
if(find(x)==find(y)) continue;
link(x,y); link(y,x);
father[find(x)]=find(y);
}
dfs(1,0); int now=0,cc,lim;
lim=2*n/k; if(lim*k<2*n) lim++;
for(int i=1;i<=k;i++) {
cc=0; out=0;
if(now<cnt) { while(cc<lim && now<cnt) now++,ans[++out]=dfn[now],cc++; }
else ans[out=1]=1;
printf("%d ",out);
for(int j=1;j<=out;j++) printf("%d ",ans[j]);
puts("");
}
} int main()
{
work();
return 0;
}
codeforces781C Underground Lab的更多相关文章
- Codeforces Round #403 (Div. 2, based on Technocup 2017 Finals) E Underground Lab
地址:http://codeforces.com/contest/782/problem/E 题目: E. Underground Lab time limit per test 1 second m ...
- CodeForces 780 E Underground Lab
Underground Lab 题解: 如果遍历一棵树,我们可以发现最多需要走的步数也不会超过2 * n步. 所以我们选出一棵树,然后遍历一边这颗树. 然后把序列分成k块就好了. 代码: #inclu ...
- Codeforces 781C Underground Lab 构造
原文链接https://www.cnblogs.com/zhouzhendong/p/CF781C.html 题目传送门 - CF781C 题意 给定一个 n 个点 m 条边的无向连通图,请你用 k ...
- Codeforces 781C Underground Lab
题目链接:http://codeforces.com/problemset/problem/781/C 因为有${K}$个机器人,每个又可以走${\left \lceil \frac{2n}{k} \ ...
- Underground Lab CodeForces - 782E (欧拉序)
大意:$n$结点,$m$条边无向图, 有$k$个人, 每个人最多走$\left\lceil\frac {2n}{k}\right\rceil$步, 求一种方案使得$k$个人走遍所有的点 $n$结点树的 ...
- 782E. Underground Lab DFS 好题
Link 题意:给出一个图,有n个点,m条边,k个人,每个人至多只能走$\lceil\frac{2n}{k}\rceil$步,输出可行的方案即输出每个人所走的步数和所走点 思路: 由于保证给出的是连通 ...
- Codeforces Round #403 (Div. 2, based on Technocup 2017 Finals)
Codeforces Round #403 (Div. 2, based on Technocup 2017 Finals) 说一点东西: 昨天晚上$9:05$开始太不好了,我在学校学校$9:40$放 ...
- Codeforces Round #403 (Div. 1, based on Technocup 2017 Finals)
Div1单场我从来就没上过分,这场又剧毒,半天才打出B,C挂了好几次最后还FST了,回紫了. AC:AB Rank:340 Rating:2204-71->2133 Div2.B.The Mee ...
- Codeforces Round#403 (Div. 1)
唉,昨天晚上迷迷糊糊地去打cf,结果fst两题,掉回蓝了... A.Andryusha and Colored Balloons 题意:给定一棵树,任意两个距离小等于二的点不能染相同的颜色,求最小颜色 ...
随机推荐
- 日志输出:控制台和log文件输出日志
self_log.py 中 import os import logging import time # 如果日志文件夹不存在,则创建 log_dir = "log" # 日志存放 ...
- python web框架 django 工程 创建 目录介绍
# 创建Django工程django-admin startproject [工程名称] 默认创建django 项目都会自带这些东西 django setting 配置文件 django可以配置缓存 ...
- su 与 su - 区别
su与su -都是用来切换用户的命令,简单说它们之间的区别就是:su -切换的干净彻底,而su 切换用户却拖泥带水. su su username,切换到指定用户,但是当前目录不会变化,环境变量还是上 ...
- 通过交换a,b 中的元素,使[序列a 元素的和]与[序列b 元素的和]之间的差最小
题目描述: 有两个序列a,b,大小都为n,序列元素的值任意整数,无序:要求:通过交换a,b 中的元素,使[序列a 元素的和]与[序列b 元素的和]之间的差最小.例如:var a=[100,99,98, ...
- Vue组件的定义方式
1.使用template标签定义组件 <!DOCTYPE html> <html> <head> <meta charset="UTF-8" ...
- iClap分享:如何优雅的在 APP 中实现测试?
开发团队常面临的问题有:内测 APP 时测出一堆 bug 写了很多文档,交到下一个人手中时问题总是不够清晰明了;版本发布公测时只能分发原生版本给团队和用户,无法快速反馈测试和体验结果;使用第三方工具, ...
- [C#]浮点数除零无法捕获异常的解决办法
解决方法: //运算前先检查被除数是否为零,为零则手动抛出除零异常 if (numberB == 0.0) { throw new DivideByZeroException(); } Result ...
- javascript 设置元素滚动大小
3. 滚动大小 最后要介绍的是滚动大小(scroll dimension),指的是包含滚动内容的元素的大小. 有些元素(例如 元素),即使没有执行任何代码也能自动地添加滚动条:但另外一些元素,则需要通 ...
- [2013-1-29] Air 安卓 天气预报源码
开源一个air android纯代码天气预报源码,未作优化~ ,仅供学习使用,勿作商用~ 花了两天时间,随便写了个天气预报 小应用 .纯代码,没有用组件,所以体积要小点.效率么...主要是没有去优 ...
- Java基础知识---continue
一:java概述: 1991 年Sun公司的James Gosling等人开始开发名称为 Oak 的语言,希望用于控制嵌入在有线电视交换盒.PDA等的微处理器: 1994年将Oak语言更名为Java: ...