【蓝桥杯】拓扑排序

一.拓扑排序

1.定义:

设G=(V,E)是一个具有n个顶点的有向图,V中的顶点序列$v_1,v_2,...,v_n$称为一个拓扑序列,当且仅当满足下列条件:若从顶点$v_i$$v_j$有一条路径,则在顶点序列中顶点$v_i$必在$v_j$之前。

2.基本思想: 

(1)从AOV网中选择一个没有前驱的顶点并且输出;

(2)从AOV网中删除该顶点,并且删去所有以该顶点为头的的弧;

(3)重复上述两步,直到全部顶点都被输出,或AOV网中不存在没有前驱的顶点。

二.实战演练

1.问题描述:

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

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

为了恢复正常传输。小明需要找到所有在环路上的电脑,你能帮助他吗?

2.输入描述:

输入范围:

第一行包含一个整数 N 。

以下 N 行每行两个整数 a,b,表示 a 和 b 之间有一条数据链接相连。

其中, 1≤N≤10^5,1≤a,b≤N。

输入保证合法。

3.输出描述:

按从小到大的顺序输出在环路上的电脑的编号,中间由一个空格分隔。

dfs+拓扑排序实现:

//发现环
#include <iostream>
#include <cstring>
#include <vector>
#include <algorithm>using namespace std;const long long N=1e5+10;
vector <int> v[N];
vector <int> result;
int d[N]={0};
bool vis[N]={false};void dfs(int x){vis[x]=true;for(int i=0;i<v[x].size();i++){d[v[x][i]]--;if(d[v[x][i]]==1){dfs(v[x][i]);}}
}
void solve(int n){for(int i=1;i<=n;i++){if(d[i]==1){dfs(i);}}for(int i=1;i<=n;i++){if(vis[i]==false){result.push_back(i);}}sort(result.begin(),result.end());for(int i=0;i<result.size();i++){cout<<result[i]<<' ';}
}
int main(int argc, const char * argv[]) {ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);int n,a,b;cin>>n;for(int i=0;i<n;i++){cin>>a>>b;d[a]++;d[b]++;v[a].push_back(b);v[b].push_back(a);}solve(n);return 0;
}

vector中的begin与end

begin返回向量头指针,指向第一个元素。

end返回向量尾指针,指向向量最后一个元素的下一个位置。

bfs+拓扑排序实现:

//发现环
#include <iostream>
#include <cstring>
#include <vector>
#include <algorithm>
#include <queue>using namespace std;const long long N=1e5+10;
vector <int> v[N];
vector <int> result;
int d[N]={0};
bool vis[N]={false};
queue <int> q;void bfs(int n){int u;for(int i=1;i<=n;i++){if(d[i]==1){q.push(i);//入队vis[i]=true;//标记为已经搜索过}}while(!q.empty()){u=q.front();//取出队头q.pop();for(int i=0;i<v[u].size();i++){//搜索邻接点d[v[u][i]]--;if(d[v[u][i]]==1){q.push(v[u][i]);vis[v[u][i]]=true;}}}for(int i=1;i<=n;i++){if(vis[i]==false){result.push_back(i);}}sort(result.begin(),result.end());for(int i=0;i<result.size();i++){cout<<result[i]<<' ';}
}int main(int argc, const char * argv[]) {ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);int n,a,b;cin>>n;for(int i=0;i<n;i++){cin>>a>>b;d[a]++;d[b]++;v[a].push_back(b);v[b].push_back(a);}bfs(n);return 0;
}

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

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

相关文章

GO数组解密:从基础到高阶全解

在本文中&#xff0c;我们深入探讨了Go语言中数组的各个方面。从基础概念、常规操作&#xff0c;到高级技巧和特殊操作&#xff0c;我们通过清晰的解释和具体的Go代码示例为读者提供了全面的指南。无论您是初学者还是经验丰富的开发者&#xff0c;这篇文章都将助您更深入地理解…

MedicalGPT 训练医疗大模型,实现了包括增量预训练、有监督微调、RLHF(奖励建模、强化学习训练)和DPO(直接偏好优化)

MedicalGPT 训练医疗大模型&#xff0c;实现了包括增量预训练、有监督微调、RLHF(奖励建模、强化学习训练)和DPO(直接偏好优化)。 MedicalGPT: Training Your Own Medical GPT Model with ChatGPT Training Pipeline. 训练医疗大模型&#xff0c;实现了包括增量预训练、有监督微…

软硬协同设计下的飞天盘古,是如何降低存储系统开销的?

云布道师 经过十几年的技术演进&#xff0c;阿里巴巴已经实现了统一存储的目标——即以“飞天盘古”系统作为统一底座&#xff0c;通过标准化、服务化和开放化的方式建立了完整的存储产品和服务体系&#xff0c;服务广大内部和外部客户。 “万古乾坤心上辟&#xff0c;于令日…

Uncertainty-Aware Mean Teacher(UA-MT)

Uncertainty-Aware Mean Teacher 0 FQA:1 UA-MT1.1 Introduction:1.2 semi-supervised segmentation1.3 Uncertainty-Aware Mean Teacher Framework 参考&#xff1a; 0 FQA: Q1: 不确定感知是什么意思&#xff1f;不确定信息是啥&#xff1f;Q2&#xff1a;这篇文章的精妙的点…

成都爱尔眼科胡建斌院长提醒眼底病,年轻人也得小心!

眼底病并非老年才会发生&#xff0c;现在很多人还很年轻就已检查出眼底病。明明年轻人代谢、免疫力都还挺好为什么会得眼底病啊&#xff1f; 眼底病是一大类眼部疾病的总称&#xff0c;眼科常见病之一&#xff0c;病变范围十分广泛。 眼球前面的角膜、晶体等&#xff0c;被称…

Python高性能web框架--Fastapi快速入门

文章目录 fastapi框架一、预备知识点1.1、http协议一、简介二、 http协议特性三、http请求协议与响应协议 1.2、api接口 二、quick start简单案例 fastapi框架 Fastapi&#xff0c;一个用于构建 API 的现代、快速&#xff08;高性能&#xff09;的web框架。 fastapi的两个核心…

Maven【1】(命令行操作)

文章目录 一丶创建maven工程二、理解pom.xml三、maven的构建命令1.编译操作2.清理操作3.测试操作4.打包操作5.安装操作 一丶创建maven工程 首先创建这样一个目录&#xff0c;然后从命令行里进入这个目录&#xff1a; 然后接下来就在这个命令行里进行操作了。 这个命令是&…

【Java程序设计】【C00317】基于Springboot的智慧社区居家养老健康管理系统(有论文)

基于Springboot的智慧社区居家养老健康管理系统&#xff08;有论文&#xff09; 项目简介项目获取开发环境项目技术运行截图 项目简介 这是一个基于Springboot的智慧社区居家养老健康管理系统设计与实现&#xff0c;本系统有管理员、社区工作人员、医生以及家属四种角色权限 管…

C#学习总结

1、访问权限 方法默认访问修饰符&#xff1a;private 类默认访问修饰符&#xff1a;internal 类的成员默认访问修饰符&#xff1a;private 2、UserControl的使用 首先添加用户控件 使用时一种是通过代码添加&#xff0c;一种是通过拖动组件到xaml中

C++ Webserver从零开始:代码书写(十二)——双向链表处理非活动连接

前言 大家好&#xff0c;如题&#xff0c;今天我们来写定时器的代码。更正一下上一章的结束语哈哈哈&#xff0c;因为我发现相比于线程池&#xff0c;定时器类是相对底层的东西。不知道大家有没有玩过有建筑系统的游戏&#xff0c;比如mc&#xff0c;幻兽帕鲁这些&#xff0c;在…

芯片开发erp软件有哪些优势?

随着科技的飞速发展&#xff0c;芯片开发行业正逐渐成为推动科技进步的关键力量。在这一领域中&#xff0c;企业资源规划(ERP)软件的应用正逐渐普及&#xff0c;为芯片开发企业带来了许多显著的优势。下面&#xff0c;我们将详细介绍芯片开发ERP软件的优势。 一、提升管理效率 …

蓝桥杯-答疑

原题链接&#xff1a;用户登录 答疑 题目描述 有 n 位同学同时找老师答疑。每位同学都预先估计了自己答疑的时间。 老师可以安排答疑的顺序&#xff0c;同学们要依次进入老师办公室答疑。一位同学答疑的过程如下 1.首先进入办公室&#xff0c;编号为 的同学需要 s&#xff0c;…

如何在本地部署密码管理软件bitwarden并结合cpolar实现远程同步

文章目录 1. 拉取Bitwarden镜像2. 运行Bitwarden镜像3. 本地访问4. 群晖安装Cpolar5. 配置公网地址6. 公网访问Bitwarden7. 固定公网地址8. 浏览器密码托管设置 Bitwarden是一个密码管理器应用程序&#xff0c;适用于在多个设备和浏览器之间同步密码。自建密码管理软件bitwarde…

数据安全之路:深入了解MySQL的行锁与表锁机制

欢迎来到我的博客&#xff0c;代码的世界里&#xff0c;每一行都是一个故事 数据安全之路&#xff1a;深入了解MySQL的行锁与表锁机制 前言基础innodb中锁与索引的关系如何避免表锁 前言 在当今数据密集的应用中&#xff0c;数据库锁成为了确保数据一致性和并发操作的关键工具…

【Spring MVC】处理器映射器:AbstractHandlerMethodMapping源码分析

目录 一、继承体系 二、HandlerMapping 三、AbstractHandlerMapping 四、AbstractHandlerMethodMapping 4.1 成员属性 4.1.1 MappingRegistry内部类 4.2 AbstractHandlerMethodMapping的初始化 4.3 getHandlerInternal()方法&#xff1a;根据当前的请求url&#xff0c;…

前端学习——JS学习

文章目录 1. 定义变量&#xff0c;关键字 var、let、const2. 定义变量&#xff0c;数据类型3. 数组变量的操作4. 对象的操作5. JSON 字符串 1. 定义变量&#xff0c;关键字 var、let、const 这里主要是对var、let做比较 /** 1. var存在变量提升、let不存在变量提升 **/ cons…

WordPress使用

WordPress功能菜单 仪表盘 可以查看网站基本信息和内容。 文章 用来管理文章内容&#xff0c;分类以及标签。编辑文章以及设置分类标签&#xff0c;分类和标签可以被添加到 外观-菜单 中。 分类名称自定义&#xff1b;别名为网页url链接中的一部分&#xff0c;最好别设置为中文…

自然语言处理(NLP)—— 神经网络自然语言处理(2)实际应用

本篇文章的第一部分是关于探索词嵌入&#xff08;word embedding&#xff09;向量空间。词嵌入是一种语言模型和文本表示技术&#xff0c;其中单词或短语从词汇表被映射到向量的高维空间中。通过这种方式&#xff0c;可以通过计算向量之间的距离来捕捉单词之间的语义关系。 1.…

8.9 矢量图层点要素热度图(Heatmap)使用

文章目录 前言热度图&#xff08;Heatmap&#xff09;QGis代码实现 总结 前言 本章介绍如何使用热度图&#xff08;Heatmap&#xff09;说明&#xff1a;文章中的示例代码均来自开源项目qgis_cpp_api_apps 热度图&#xff08;Heatmap&#xff09; 热度图以颜色代表点密度&…

python自带轻量级键值数据库shelve

使用python自带的shelve模块&#xff0c;可以作为轻量级的键值数据库&#xff0c;在使用时可以像字典一样使用&#xff1a; 使用shelve模块的流程如下&#xff1a; 示例程序 import pandas as pd import shelve import numpy as npdef main():_shelve_file "shelve_fi…