2017蓝桥杯决赛-发现环 数据结构|搜索

问题描述
小明的实验室有N台电脑,编号1~N。原本这N台电脑之间有N-1条数据链接相连,恰好构成一个树形网络。在树形网络上,任意两台电脑之间有唯一的路径相连。


  不过在最近一次维护网络时,管理员误操作使得某两台电脑之间增加了一条数据链接,于是网络中出现了环路。环路上的电脑由于两两之间不再是只有一条路径,使得这些电脑上的数据传输出现了BUG。


  为了恢复正常传输。小明需要找到所有在环路上的电脑,你能帮助他吗?
输入格式
第一行包含一个整数N。
  以下N行每行两个整数a和b,表示a和b之间有一条数据链接相连。


  对于30%的数据,1 <= N <= 1000
  对于100%的数据, 1 <= N <= 100000, 1 <= a, b <= N


  输入保证合法。
输出格式
按从小到大的顺序输出在环路上的电脑的编号,中间由一个空格分隔。
样例输入
5
1 2
3 1
2 4
2 5
5 3
样例输出

1 2 3 5


分析: 可以利用一个栈 任意取一个点开始搜索 然后把所有没入栈的元素入栈 只要没有重复元素入栈 就一直搜索下去 由于本来就是一棵树 并且只有一个环 所以当我们遇到重复入栈的元素的时候 就不断弹出 知道把问题元素弹完为止 那么就相当于把这个环中的所有元素都弹出来了


#include<bits/stdc++.h>
using namespace std;
const int maxn = 1e5+10;
stack<int>S;
priority_queue<int,vector<int>,greater<int> >pq;
vector<int>g[maxn];
bool fin,bok[maxn];
void dfs(int x,int f){if(!bok[x]){bok[x] = 1;S.push(x);for(int i=0;i<g[x].size();i++){int t = g[x][i];if(t!=f)dfs(t,x);if(fin)return;	}if(S.top()==x){S.pop();}}else{while(1){int t ;if(!S.empty()){t  = S.top();S.pop();pq.push(t);bok[t] = false;if(t==x)break;}}if(pq.size()>1){fin=1;return;}}
}
int main(){int n;scanf("%d",&n);for(int i=1;i<=n;i++){int s,e;scanf("%d%d",&s,&e);g[s].push_back(e);g[e].push_back(s);}dfs(1,-1);while(!pq.empty()){int t = pq.top();pq.pop();if(pq.size()==0)printf("%d\n",t);else printf("%d ",t);} return 0;
} 


拓扑排序也可以做

#include<bits/stdc++.h>
#include<set>
using namespace std;
set<int>g[1000010];
bool del[1000010];
int main(){int n;scanf("%d",&n);for(int i=1;i<=n;i++){int s,e;scanf("%d%d",&s,&e);g[s].insert(e);g[e].insert(s);		}		int cnt=0;queue<int>que;for(int i=1;i<=n;i++){if(g[i].size()==1)que.push(i);	}while(!que.empty()){int t = que.front();que.pop();for(set<int>::iterator i=g[t].begin();i!=g[t].end();i++){int now = *i;g[now].erase(t);if(g[now].size()==1){que.push(now);cnt++;}}g[t].clear(); }for(int i=1;i<=n;i++){if(g[i].size()){cnt--;if(cnt==0)printf("%d\n",i);else printf("%d ",i);}	}return 0;
} 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/425186.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

第十七期:详解大数据处理中的Lambda架构和Kappa架构

在这张架构图中&#xff0c;大数据平台里面向用户的在线业务处理组件用褐色标示出来&#xff0c;这部分是属于互联网在线应用的部分&#xff0c;其他蓝色的部分属于大数据相关组件&#xff0c;使用开源大数据产品或者自己开发相关大数据组件。 典型互联网大数据平台架构 首先我…

[密码学基础][每个信息安全博士生应该知道的52件事][Bristol Cryptography][第28篇]什么是公钥密码学的IND-CCA安全定义?

这是一系列博客文章中最新的一篇&#xff0c;该文章列举了“每个博士生在做密码学时应该知道的52件事”:一系列问题的汇编是为了让博士生们在第一年结束时知道些什么。讨论了用于公钥加密的IND-CCA安全性。 IND-CCA安全代表选择明文的不可伪造性。这样的安全方案的思想就是给定…

玩转oracle 11g(51):select t.*,t.rowid

select t.*,t.rowid from wii_device_master t; ‘ 点开解锁 复制ctrlc crtl v加入新的值 很简单&#xff0c;sql语句后面加上for update即可&#xff1a; 但是今天遇到一种情况&#xff0c;无法对该表进行修改&#xff0c;因为这样会锁表的 下面这样写比较好&#xff0c;也…

[小技巧][Markdown]上标 /下标 上下角标

标签写法效果上标2 10 上标2 10下标H2O下标H2O //上标 2<sup> 10 </sup> 2 ^10^ //下标 H<sub>2</sub>O H~2~O//上标 2 10 2 10 //下标 H2O H2O [总结] 1.上标 sup标签 &#xff1a; <sup> 内容 </sup> ^ : ^内容^2.下标 sub标…

第十八期:专家认为对“人工智能+教育”应持审慎态度

随着人工智能不断发展,人脸识别技术被越来越多地应用于校园中。据了解,一所知名大学2019级新生“刷脸”就能瞬间完成报到程序,系统是这所学校的学生研发的,学生对着摄像头,人脸识别系统就开始进行比对,眨眼间就能完成扫描,整个报到注册手续几乎不到一秒钟。 制图/李晓军 ● 人…

文字排版 - bootStrap4常用CSS笔记

【文字常用标签】 <h1>、<h2>、<h3>、<h4>、<h5>、<h6>标题类标签&#xff0c;h1字体最大以次类推<small>更小、颜色更浅的字号。<mark>黄色背景及有一定的内边距的文本<abbr>简要标签, 结合title使用,示例: <abbr t…

图论中的基础概念总结

总结下图论中的各种基础概念 所以有部分定义直接搬运了度娘啦~ 子图设为两个图&#xff08;同为无向图或同为有向图&#xff09;&#xff0c;若且&#xff0c;则称G是G的子图&#xff0c;G是G‘的母图&#xff0c;记作&#xff0c;又若且&#xff0c;则G称是G的真子图&#xff…

[Leetcode][第312题][JAVA][戳气球][动态规划][记忆化搜索]

【问题描述】[困难] 【解答思路】 1. 记忆化搜索 时间复杂度&#xff1a;O(n^3) 空间复杂度&#xff1a;O(n^2) class Solution {public int[][] rec;public int[] val;public int maxCoins(int[] nums) {int n nums.length;val new int[n 2];for (int i 1; i < n; i)…

第十九期:CIO不懂老板数字化转型的目的,因为老板也不知道自己想要什么

既然不知道数字化转型的目的是什么&#xff0c;那么为什么老板会花大价钱进行数字化转型呢&#xff1f;CIO应该找到老板真正想要什么&#xff0c;一切的目的都在业务上。 据传有份权威机构说全球企业数字化转型的失败率将近80%。 但是到处都搜不到这句话的出处。我敢肯定这个数…

POJ-1236 Network of Schools 缩点

题意&#xff1a;就是给我们一个网络 让我们求 1 选择最少的点传信 能够使得这个信息传遍整个网络 2 求加的最少的边 使得 加上这些边后整个图任取一个点信息就可以传到网络中任何一个店分析&#xff1a; 对于1问 可以用tarjan缩点 把所有的强联通分量缩成一个点 去考虑 然后求…

selenium+python自动化80-文件下载(不弹询问框)

前言 上一篇是点弹出框上的按钮去保存文件&#xff0c;本篇介绍一种更加优雅的方法&#xff0c;加载Firefox和Chrome的配置文件&#xff0c;不弹出询问框后台下载。 一、FirefoxProfile 1.点下载的时候&#xff0c;如下图&#xff0c;如果不想让它弹出这个询问框&#xff0c;可…

第二十期:想吃透监控系统,就这一篇够不够?

经济高速发展的今天&#xff0c;我们处于信息大爆炸的时代。随着经济发展&#xff0c;信息借助互联网的力量在全球自由地流动&#xff0c;于是就催生了各种各样的服务平台和软件系统。 经济高速发展的今天&#xff0c;我们处于信息大爆炸的时代。随着经济发展&#xff0c;信息借…

[Leetcode][第95题][JAVA][不同的二叉搜索树 II][递归]

【问题描述】[中等] 【解答思路】 1. 递归 复杂度 class Solution {public List<TreeNode> generateTrees(int n) {if (n 0) {return new LinkedList<TreeNode>();}return generateTrees(1, n);}public List<TreeNode> generateTrees(int start, int end…

EXEJ4 生成的java exe文件更换电脑后出现闪退情况解决办法

用命令行打开exe程序后检查调试信息发现如果是The JAVA_HOME environment variable does notpoint to a working 32-bit JDK or JRE.表示本电脑上没有对应的32位jdk或者jre运行环境&#xff0c;jdk版本不对解决办法&#xff1a;如果没有java运行环境需要提前配置好&#xff0c;…

2018-2019-2 网络对抗技术 20165303 Exp4 恶意代码分析

实践目标 1.1是监控你自己系统的运行状态&#xff0c;看有没有可疑的程序在运行。 1.2是分析一个恶意软件&#xff0c;就分析Exp2或Exp3中生成后门软件&#xff1b;分析工具尽量使用原生指令或sysinternals,systracer套件。 1.3假定将来工作中你觉得自己的主机有问题&#xff0…

第二十一期:老大难的GC原理及调优,这全说清楚了

本文介绍 GC 基础原理和理论&#xff0c;GC 调优方法思路和方法&#xff0c;基于 Hotspot jdk1.8&#xff0c;学习之后你将了解如何对生产系统出现的 GC 问题进行排查解决。 本文介绍 GC 基础原理和理论&#xff0c;GC 调优方法思路和方法&#xff0c;基于 Hotspot jdk1.8&…

[剑指offer]面试题第[47]题[JAVA][礼物的最大价值][动态规划]

【问题描述】[中等] 【解答思路】 1动态规划 动态规划流程 第 1 步&#xff1a;设计状态 f(i, j)f(i,j) 为从棋盘左上角走至单元格 (i ,j)(i,j) 的礼物最大累计价值 第 2 步&#xff1a;状态转移方程 f(i,j)max[f(i,j−1),f(i−1,j)]grid(i,j) 第 3 步&#xff1a;考虑初始化…

关于递归函数,非递归函数中引用传参的问题

首先 我们来看这个函数 typedef int Ele; typedef struct list{Ele data;list *next; }List,*LNode; void dele2(LNode &l,Ele e){if(lNULL)return;printf("Hello!!\n");printf("to %d\n",l);if(l->datae){LNode p l;l l->next;//***free(p…

请让蝴蝶爬满全身

请。转载于:https://www.cnblogs.com/SINXIII/p/10657726.html

第二十四期:揭秘:为什么电脑越用越卡 大型破案现场

今天谈一个大家都好奇地问题&#xff0c;为什么电脑越来越卡&#xff0c;相信大家都深有体会&#xff0c;好好的电脑刚买的时候像火箭&#xff0c;现在怎么就支棱不起来了呢&#xff0c;是老了么? 今天谈一个大家都好奇地问题&#xff0c;为什么电脑越来越卡&#xff0c;相信大…