2021四川省赛E

Don’t Really Like How The Story Ends

题目大意

给图加边,使得一个可能的DFS序列刚好是从1到n

Time : 1000 ms
Memory: 262144 kB

解题思路及分析

第一次打正式比赛,场上E因为自己的nt行为T了好几发,这个是赛后补题
直接搜索,但是需要有一定条件
如果想要DFS序列刚好为从1到N,需要满足的条件:

  1. 如果 v v v与 v + 1 v+1 v+1直接相连,则访问搜索 v + 1 v+1 v+1
  2. 如果 v v v点存在没有访问的相邻节点且 v v v点不与 v + 1 v+1 v+1点相连,此时必须将 v + 1 v+1 v+1连接到 v v v上
  3. 如果 v v v点所有相邻节点都被访问了, v + 1 v+1 v+1可以与 v v v相连,也可以和从 1 1 1=> v v v中路径上的任意一点相连,路径上的点都在递归栈里面,此时可以让 v v v点退栈,一直回到某个满足条件 1 1 1或 2 2 2的节点
  4. 如果第3点的点退栈一直到起点1号点都没有直接相连,说明存在不连通部分,此时必须加边,此时再去搜索不连通的部分,一直到全部搜索完

AC代码

#include <bits/stdc++.h>
typedef long long llong;
const int N = 1e5 + 5;
using namespace std;
vector<int> mp[N];
bool vis[N];
int cnt;
int n, m, nxt;void dfs(int u) {nxt++;for (int i = 0; i < mp[u].size(); i++) {int to = mp[u][i];if (vis[to]) continue;if (to == nxt) {    // [1]vis[nxt] = true;dfs(nxt);} else {            // [2]cnt++;vis[nxt] = true;dfs(nxt);i--;} }if (u == 1) {          // [3] [4]while (nxt <= n) {vis[nxt] = true;dfs(nxt);cnt++;}}
}int main() {ios::sync_with_stdio(false);cin.tie(0);int T;  cin >> T;while (T--) {cin >> n >> m;for (int i = 1; i <= n; i++) {mp[i].clear();vis[i] = false;}nxt = 1;cnt = 0;for (int i = 0; i < m; i++) {int u, v;cin >> u >> v;if (u < v)  mp[u].push_back(v);if (u > v)  mp[v].push_back(u);  // 一个小优化,只由编号小的节点连接到编号大的节点}for (int i = 1; i <= n; i++) {sort(mp[i].begin(), mp[i].end());    // 这里进行排序,就可以保证每次访问的节点都是最小的,方便判断刚刚解题思路中说的条件// 不要用堆,亲测会T(场上nt的我)}vis[1] = true;dfs(1);cout << cnt << endl;}return 0;
}

【2021四川省赛】E.Don‘t Really Like How The Story Ends 图论相关推荐

  1. 2021四川省赛A,B,D,H,K

    2021 年第十三届四川省 ACM-ICPC 大学生程序设计竞赛(重现赛) A.Chuanpai B.Hotpot D.Rock Paper Scissors H.Nihongo wa Muzukas ...

  2. 2018华迪杯计算机设计大赛,华迪杯第14届中国大学生计算机设计大赛四川省赛在吉利学院成功举办_四川在线...

    5月15日至16日,由四川省教育厅.中国大学生计算机设计大赛四川省赛组委会主办,四川省高等院校计算机基础教育研究会.吉利学院承办的2021年四川省大学生计算机设计大赛暨"华迪杯"第 ...

  3. [SWPUCTF 2021 新生赛]第一波放题(nssctf刷题)

    [SWPUCTF 2021 新生赛]jicao json_decode介绍: json_decode (PHP 5 >= 5.2.0, PECL json >= 1.2.0) json_d ...

  4. [SWPUCTF 2021 新生赛]easyrce

    打开题以后发现这个界面,需要构造url的值,然后就想起来看一下目录 ?url=system("ls /");注意:ls后面要有一个空格,然后一个分号结束,这不就出来了flag 1: ...

  5. [SWPUCTF 2021 新生赛]babyrce

    打开界面看见if选项admin=1果断想到用burp抓包然后cookie给admin=1,获取下一步指令  然后url访问, <?php error_reporting(0); highligh ...

  6. 2021美赛Latex排版美化 完整代码2

    今天是2月2号,还有三天就打美赛了,我在2021美赛Latex排版美化 完整代码1的基础上又做了一些补充,希望可以帮助到大家. 文章目录 一.2021美赛新要求 二.带颜色的表格 三.公式 四.目录超 ...

  7. 2021美赛Latex排版美化 完整代码1

    2021美赛Latex排版 还有两周就打美赛啦!!!这次小组准备用Latex排版,毕竟比word用得舒坦~ 下面是官网下载的MCM-ICM_2021_Summary: %%%%%%%%%%%%%%%% ...

  8. 2021美赛D题思路

    2021美赛D题翻译和思路 团队为建模国一获得者,有丰富建模经验,因为需保证建模思路的完整性,更新较慢,怕被D.新号. D题翻译 D题思路 问题一:使用Impact_data数据集或其中的一部分来创建 ...

  9. 2021电赛题目预测

    前两天刚写完一篇文章关于电赛各方向所需元器件的建议,结果我还没发表官方的文档就出来了! 造成我写的那篇文章没有发布,所以我想着重新给大家写一篇文章,来根据这次官方给出的元器件进行判断一下今年的题大致可 ...

最新文章

  1. 计算机系统的指令系统,计算机指令系统指的是什么呢?
  2. Magento 1.9.2 Unknown cipher in list: TLSv1
  3. (转)TweenMax动画库学习(四)
  4. 初学shell,今天遇到由wget下载到本地的网页源代码的乱码问题,无聊的写了一个转码的脚本...
  5. 数据库学习一站式入门资料(纯干货)
  6. 凯撒/摩斯/栅栏/维吉尼亚/元音密码加解密的Python实现
  7. c#一个项目同时兼容浩辰cad和AutoCad
  8. springboot下使用拦截器和过滤器
  9. 安川工业机器人实训心得_安川MOTOMAN工业机器人编程与操作(3)
  10. 戴尔服务器找不到启动项,一个可以解决戴尔笔记本重装系统找不到引导或硬盘启动项方法...
  11. 京东已删除订单恢复方法
  12. java string 几个字节_java中字符串占几个字节
  13. 【计算机网络】计网学习——总览(超多图+超详解)
  14. android数据库工具 SQLiteSpy下载 sharePlus.Sqlite下载 DB.Browser.for.SQLite下载
  15. “湖南索御文化传媒”新闻发布会即将启动
  16. Cadence OrCAD Capture按页码自动编号的方法图文教程及视频演示
  17. 社区投稿 | DBLE 自定义拆分算法
  18. 记一次解决Intel 9462无线网卡的笔记本安装Ubuntu16.04后无法连接WIFI问题的艰难历程
  19. jq获取页面高度_jquery常见获取高度
  20. 什么是RSA国产数字证书?

热门文章

  1. 数据仓库-hive分区表
  2. python飞机大战设计思路_python飞机大战pygame游戏背景设计详解
  3. PSRAM/SRAM与XMC硬件连接的推荐方法
  4. TLV2333IDR的工作原理?
  5. 微信小程序IOS手机能正常访问但是安卓手机出现REQUEST FAILED无法访问服务器问题
  6. python第五次作业——潘芊睿
  7. 基于Unity的VR迷宫游戏项目技术分享
  8. php开发视频直播平台技术,视频直播网站开发千万不能忘的一个知识点
  9. web页面性能优化及SEO优化
  10. 求函数最值(模拟退火算法C++实现)