cf780E(dfs)
2024-09-21 10:12:40
题目链接: http://codeforces.com/problemset/problem/780/E
题意: 给出一个 n 个点 m 条边的图, 有 k 个人, 初始位置可以为任意位置, 每个人最多不能经过超过 ceil(2 * n / k) 个顶点. 要使 k 个人经历所有顶点, 并输出 k 个人经历的顶点数目和路径.
思路: 先 dfs 遍历一下图, 并记录路径 (回溯路径也要记录). 然后再将路径按条件分配给 k 个人即可.
代码:
#include <iostream>
#include <stdio.h>
#include <vector>
using namespace std; const int MAXN = 2e5 + ;
vector<int> vt[MAXN];
int vis[MAXN], path[MAXN << ];
int indx = ; void dfs(int x){
vis[x] = ;
path[++indx] = x;
for(int i = ; i < vt[x].size(); i++){
if(!vis[vt[x][i]]){
dfs(vt[x][i]);
path[++indx] = x;
}
}
} int main(void){
int n, m, k, x, y;
scanf("%d%d%d", &n, &m, &k);
for(int i = ; i < m; i++){
scanf("%d%d", &x, &y);
vt[x].push_back(y);
vt[y].push_back(x); }
dfs();
int cnt = ( * n + k - ) / k;
for(int i = ; i < k; i++){
int cc = min(cnt, indx);
if(!cc){
printf("1 1\n");
continue;
}
printf("%d ", cc);
for(int j = ; j < cc && indx; j++,indx--){
printf("%d ", path[indx]);
}
puts("");
}
return ;
}
最新文章
- awk神器
- Sqlserver 函数
- [资源]PHP使用消息队列
- unbuntu下安装flash插件
- 【轻院热身赛】级数求和、进制转换、candy
- Docker的简单认知
- IE浏览器下使用AJAX登陆接口请求缓存与登陆不了的问题解决
- swift 3.0 基础练习 面向对象 类
- Android 开发笔记___DateUtil——Time
- dnc开源梦之队2018 开源项目精选集
- javascript最全最好的判断数组的方法
- JS 将值插入数组中
- Linux kernel Programming - Concurrency and Race Conditions
- 设置cookie,获取cookie,删除cookie,修改cookie
- springboot retry
- 005.FTP本地用户访问
- inux下使用自带mail发送邮件告警
- CSS学习笔记(11)--Flex 布局教程:语法篇
- LCS最长共同子序列
- java的foreach,后台弹框
热门文章
- Fchart
- 分享知识-快乐自己:Shrio 案例Demo概述
- Using SMOTEBoost(过采样) and RUSBoost(使用聚类+集成学习) to deal with class imbalance
- sqlserver 新建只读权限用户
- poj-2420 A Star not a Tree?(模拟退火算法)
- 解决苹果手机Safari浏览器下 字体显示为 蓝色的 问题
- ACM学习历程—HDU5637 Transform(数论 &;&; 最短路)
- [转]由Tencent://Message协议想到的一个解决方案
- python setuptools安装
- 问题7:如何实现用户的历史记录功能(最多n条)