scau 拓扑排序

news2024/12/22 16:28:12

18734 拓扑排序

时间限制:1000MS  代码长度限制:10KB
提交次数:0 通过次数:0

题型: 编程题   语言: G++;GCC

Description

在经历.....之后,你打算好好学习下计算机专业的课程,避免面试过程中的各种尴尬场面。
计算机的专业课程间既有循序渐进的特点,相互间也存在着依赖关系(似乎其他专业也是这样......)。
现在给你n门课程和m个课程间关系,请给出一个有效的学习次序。
注意可能存在多门课程不依赖任何其他课程



 

输入格式

第一行有2个数,分别为课程数n和关系数m。     (1=<n<=20) (1=<m<=30) 
接下来有m行,每一行有2个整数a和b,表示课程b依赖于课程a。(1=<a,b<=n) 


 

输出格式

仅一行,一个整数序列,代表课程学习次序。
为确保输出唯一性,同等条件下,编号小的在排在前面。


 

输入样例

6 8
1 2
1 3
1 4
3 2
3 5
4 5
6 4
6 5


 

输出样例

1 3 2 6 4 5


 

提示

图片来源于今日头条。
#include<iostream>
#include<queue>
#include<algorithm>

using namespace std;
int e[505][505],d[505];
int main(){
	int n,m;
	cin>>n>>m;
	for(int i=1;i<=m;++i){
		int x,y;
		cin>>x>>y;
		e[x][y]=1;
		d[y]++;
	}
	priority_queue<int,vector<int>,greater<int> >q;
	for(int i=1;i<=n;++i){
		if(d[i]==0){
			q.push(i);
		}
	}
	while(!q.empty()){
		int t=q.top();
		q.pop();
		cout<<t<<' ';
		for(int i=1;i<=n;++i){
			if(e[t][i]==1){
				d[i]--;
				if(d[i]==0){
					q.push(i);
				}
			}
		}
	}
	return 0;
} 

 

 

19011 小猿的依赖循环

时间限制:1000MS  代码长度限制:10KB
提交次数:0 通过次数:0

题型: 编程题   语言: G++;GCC

Description

猿辅导2021校园招聘笔试(算法二) 
小猿在加载一个网页,这个网页共需要N个相关资源,这些资源之间有一些依赖关系。
如果这些资源中存在循环依赖,我们认为这个网页不能加载成功,否则可以加载成功。
存在循环依赖是指,这些资源中存在资源X,X依赖的资源Y直接或间接依赖于X。
你能帮助小猿判断一下这个网页能否加载成功吗?


 

输入格式

第一行输入T(T ≤ 10),表示输入T组数据。
每组数据第1行,输入一个数N(1 ≤ N ≤ 500)表示该组case有编号为1~N的N项资源。
每组数据第2到 N+1 行,输入一个 N*N 的零一矩阵。
矩阵第 i 行第 j 列数字为 a[i][j] 表示编号为 i 的资源是否依赖于编号为 j 的资源,1表示依赖,0表示不依赖。数据保证a[i][i] = 0。
 

输出格式

输出包含T行,每行输出对应每组case中是否存在循环依赖。存在输出1,不存在输出0。
 

输入样例

2
3
0 1 0
0 0 1
1 0 0
3
0 1 0
0 0 0
0 0 0
 

输出样例

1
0
 

提示

第一组数据:1依赖于2,2依赖于3,3依赖于1,存在循环依赖。第二组数据:只有1依赖于2,不存在循环依赖。
提示:既然是有向无环图,做一下拓扑排序看看能不能输出n个数字,不能就是有环存在。
#include<iostream>
#include<queue>
#include<cstring>
#include<algorithm>

using namespace std;
int e[505][505],d[505];
int main() {
	int t;
	cin>>t;
	while(t--) {
		memset(e,0,sizeof(e));
		memset(d,0,sizeof(d));
		int n;
		cin>>n;
		for(int i=1;i<=n;++i){
			for(int j=1;j<=n;++j){
				cin>>e[i][j];
				if(e[i][j]==1){
					d[i]++;
				}
			}
		}
		priority_queue<int,vector<int>,greater<int> >q;
		for(int i=1; i<=n; ++i) {
			if(d[i]==0) {
				q.push(i);
			}
		}
		int cnt=0;
		while(!q.empty()) {
			int tmp=q.top();
			q.pop();
			cnt++;
			for(int i=1; i<=n; ++i) {
				if(e[i][tmp]==1) {
					d[i]--;
					if(d[i]==0) {
						q.push(i);
					}
				}
			}
		}
		if(cnt==n){
			cout<<"0"<<endl;
		}else{
			cout<<"1"<<endl;
		}
	}
	return 0;
}

 

19017 编译依赖问题(拓扑排序)

时间限制:1000MS  代码长度限制:10KB
提交次数:0 通过次数:0

题型: 编程题   语言: G++;GCC

Description

vivo2021届秋季校招在线编程 
一个完整的软件项目往往会包含很多由代码和文档组成的源文件。编译器在编译整个项目的时候,可能需要按照依赖关系来依次编译每个源文件。
比如,A.cpp 依赖 B.cpp,那么在编译的时候,编译器需要先编译 B.cpp,才能再编译 A.cpp。
 假设现有 0,1,2,3 四个文件,0号文件依赖1号文件,1号文件依赖2号文件,3号文件依赖1号文件,则源文件的编译顺序为 2,1,0,3 或 2,1,3,0。
现给出文件依赖关系,如 1,2,-1,1,表示0号文件依赖1号文件,1号文件依赖2号文件,2号文件没有依赖,3号文件依赖1号文件。
请补充完整程序,返回正确的编译顺序。注意如有同时可以编译多个文件的情况,
按数字升序返回一种情况即可(简单说就是选择序号最小的),比如前述案例输出为:2,1,0,3



 

输入格式

一个字符串,代表要编译的文件依赖关系。文件编号小于100。


 

输出格式

一个序列,代表编译顺序,两个数字间用空格分隔。


 

输入样例

1,2,-1,1


 

输出样例

2,1,0,3


 

提示

按原题要求,输入序列是一个字符串,输出序列也是一个字符串形式。

 

#include<iostream>
#include<queue>
#include<string> 
#include<algorithm>

using namespace std;
int d[105],a[105],e[105][105];
int main() {
	string s;
	cin>>s;
	int i=0,n=1,j=0;
	while(s[i]){
		if(s[i]==','){
			i++;
		}else if(s[i]=='-'){
			int sum=0;
			i++;
			while(s[i]!=','&&s[i]){
				sum=sum*10+s[i++]-'0';
			}
			//cout<<sum<<endl;
			sum=0-sum;
			a[n++]=sum;
		}else{
			int sum=0;
			while(s[i]!=','&&s[i]){
				sum=sum*10+s[i++]-'0';
			}
			a[n++]=sum;
		}
	}
	n--;
	//cout<<n<<endl;
	for(i=0;i<n;++i){
		j=i+1;
		if(j<=n&&a[j]!=-1){
			e[i][a[j]]=1;
			d[i]++;
		}
	}
	priority_queue<int,vector<int>,greater<int> >q;
	for(int i=0; i<n; ++i) {
		if(d[i]==0) {
			q.push(i);
		}
	}
	int cnt=0;
	while(!q.empty()) {
		int t=q.top();
		q.pop();
		a[++cnt]=t;
		for(int i=0;i<n;++i){
			if(e[i][t]){
				q.push(i);
			}
		}
	}
	cout<<a[1];
	for(i=2;i<=cnt;++i){
		cout<<","<<a[i];
	}
	return 0;
}











 

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

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

相关文章

解决方案 自动测试平台 通用测试平台

“通用测试平台”是针对测试保障所需研制的小型化、通用化、平台化综合保障设备。它采用可灵活扩展、剪裁和重构的开放式体系结构&#xff0c;支持用户对测试资源进行快速地剪裁或扩展&#xff0c;结合功能强大灵活的软件平台&#xff0c;能够支持多种被测件的测试和故障诊断。…

电赛E题声源定位跟踪系统制作全过程

声源定位 文章目录 声源定位前言一、题目二、设计步骤1.设计思路2.声源追踪定位的分析3.舵机转角的确定4.声源距离的计算 三、代码编写1.求均值2.卡尔曼滤波 复刻一下电赛的声源定位 前言 2023年的电子设计竞赛快要开始了&#xff0c;同时我也已经大三下了正在准备找工作&…

Mybatis之配置解析

目录 核心配置文件 environments&#xff08;环境配置&#xff09; properties&#xff08;属性&#xff09; typeAliases( 类型别名) 映射器 注解开发 Mybatis执行流程 核心配置文件 mybatis-config.xml configuration&#xff08;配置&#xff09; pr…

【STM32】STM32使用RFID读卡器

STM32使用RFID读卡器 RFID卡片 ID卡&#xff08;身份标识&#xff09;&#xff1a;作用就是比如你要输入学号&#xff0c;你刷卡直接就相当于输入学号&#xff0c;省去了输入的过程 IC卡&#xff1a;集成电路卡&#xff0c;是将一种微电子芯片嵌入卡片之中 RFID的操作 1、…

【C++学习】模板初阶

目录 一、泛型编程 二、函数模板 2.1 函数模板概念 2.2 函数模板格式 2.3 函数模板的原理 2.4 函数模板的实例化 2.5 模板参数的匹配原则 三、类模板 3.1 类模板的定义格式 3.2 类模板的实例化 一、泛型编程 我们前面学习了C的函数重载功能&#xff0c;那么我们如何实现…

低调的接口工具 ApiKit

最近发现一款接口测试工具--ApiKit&#xff0c;我们很难将它描述为一款接口管理工具 或 接口自测试工具。 官方给了一个简单的说明&#xff0c;更能说明 Apikit 可以做什么。 ApiKit API 管理 Mock 自动化测试 异常监控 团队协作 ApiKit的特点&#xff1a; 接口文档定义&a…

多层级缓存

多级缓存 多级缓存方案 多级缓存就是充分利用请求处理的每个环节&#xff0c;分别添加缓存&#xff0c;减轻Tomcat压力&#xff0c;提升服务器性能&#xff1a; 用作缓存的Nginx是业务Nginx&#xff0c;需要部署为集群&#xff0c;再有专门的Nginx用来做反向代理&#xff1a;…

ModStartCMS v6.4.0 模块市场升级,UI界面优化

ModStart 是一个基于 Laravel 模块化极速开发框架。模块市场拥有丰富的功能应用&#xff0c;支持后台一键快速安装&#xff0c;让开发者能快的实现业务功能开发。 系统完全开源&#xff0c;基于 Apache 2.0 开源协议&#xff0c;免费且不限制商业使用。 功能特性 丰富的模块市…

一文吃透 Vue 框架教程(上)

✅作者简介&#xff1a;2022年博客新星 第八。热爱国学的Java后端开发者&#xff0c;修心和技术同步精进。 &#x1f34e;个人主页&#xff1a;Java Fans的博客 &#x1f34a;个人信条&#xff1a;不迁怒&#xff0c;不贰过。小知识&#xff0c;大智慧。 &#x1f49e;当前专栏…

phpstorm+xdebug的安装与使用

工具和环境 phpstorm 2018 php5.6 线程安全 xdebug 1.下载和安装xdebug 1.1 查看自己phpinfo信息 比如我这里是php 5.6 &#xff0c;线程安全版本 1.2 xdebug 官网 Xdebug: Historical Releases 根据自己的php版本选择要下载的dll文件 如果是高版本一点的php &#xff…

Java基础面试题突击系列3

&#x1f469;&#x1f3fb; 作者&#xff1a;一只IT攻城狮 &#xff0c;关注我不迷路 ❤️《java面试核心知识》突击系列&#xff0c;持续更新… &#x1f490; 面试必知必会学习路线&#xff1a;Java技术栈面试系列SpringCloud项目实战学习路线 &#x1f4dd;再小的收获x365天…

Qt实现DES ECB加密解密

环境&#xff1a;Windows11 64位 工具链&#xff1a;MinGW32 IDE&#xff1a;Qt 5.14 Qt使用DES加密需要用到OpenSSL库&#xff0c;首先要确定当前使用的Qt所支持的SSL版本。编译OpenSSL 查看当前Qt对OpenSSL的支持情况 qDebug() << QSslSocket::supportsSsl();返回 tr…

C++STL简介

本期我们来简单介绍一下STL 目录 1.什么是STL 2.STL的版本 3.STL的六大组件 4.如何学习STL 5.STL的缺陷 本期内容比较简单&#xff0c;大家只需简单看看了解一下即可 1.什么是STL STL(standard template libaray- 标准模板库 ) &#xff1a; 是 C 标准库的重要组成部分 &…

Postman使用技巧

本文仅针对笔者的Postman使用习惯&#xff0c;纯属个人理解&#xff0c;如有不同或更好的方式烦请指出。 文章目录 前言一、Postman是什么&#xff1f;二、使用步骤1. Collection分级习惯2.配置环境变量3.Postman接口请求自带url前缀3.1 方式一&#xff1a;在url中添加环境变量…

深度学习框架搭建

5.15 首先是了解下&#xff0c;怎么配置环境啊这一套的。。 1.大概了解了一些名词意思 python&#xff0c;不用说了&#xff0c;就是一门语言 anoconda是一些包啊之类的管理工具&#xff0c;挺好用的&#xff0c;管理虚拟环境用的。 jupyter和pycharm都是类似于IDE吧&#…

【系统移植】SD卡烧录uboot、linux内核、根文件系统

目录 一、SD卡分区 二、SD卡烧录uboot 三、SD卡烧录linux内核 四、SD卡烧录根文件系统 五、修改uboot环境变量 1、设置 bootcmd 2、设置 bootargs 参考链接&#xff1a;IMX6Q的SD卡启动使用教程_mayue_csdn的博客-CSDN博客 一、SD卡分区 无论是EMMC还是SD卡启动&#…

Promise理解

做一道题,理解一下: function getPrinterList() {let res 初始setTimeout(() > {res 1},1000)return res }let res getPrinterList() console.log(res); //输出初始 在getPrinterList函数中,先分清同步异步. JS执行语句时,会区分同步异步,把所有的同步放在同步队列中,把…

2023-5-19-Debug和Release到底有多少不同?

&#x1f37f;*★,*:.☆(&#xffe3;▽&#xffe3;)/$:*.★* &#x1f37f; &#x1f4a5;&#x1f4a5;&#x1f4a5;欢迎来到&#x1f91e;汤姆&#x1f91e;的csdn博文&#x1f4a5;&#x1f4a5;&#x1f4a5; &#x1f49f;&#x1f49f;喜欢的朋友可以关注一下&#xf…

【HTTPS加密】

&#x1f389;&#x1f389;&#x1f389;点进来你就是我的人了博主主页&#xff1a;&#x1f648;&#x1f648;&#x1f648;戳一戳,欢迎大佬指点! 欢迎志同道合的朋友一起加油喔&#x1f93a;&#x1f93a;&#x1f93a; 目录 1.HTTPS 是什么 1.1 运营商劫持 1.2 关于加密…

面试季,真的太狠了...

金三银四面试季的复盘&#xff0c;真的太狠了… 面试感受 先说一个字 是真的 “ 累 ” 安排的太满的后果可能就是一天只吃一顿饭&#xff0c;一直奔波在路上 不扯这个了&#xff0c;给大家说说面试吧&#xff0c;我工作大概两年多的时间&#xff0c;大家可以参考下 在整个面…