当前位置: 首页 > news >正文

P5318 【深基18.例3】查找文献

题目描述

小K 喜欢翻看洛谷博客获取知识。每篇文章可能会有若干个(也有可能没有)参考文献的链接指向别的博客文章。小K 求知欲旺盛,如果他看了某篇文章,那么他一定会去看这篇文章的参考文献(如果他之前已经看过这篇参考文献的话就不用再看它了)。

假设洛谷博客里面一共有 �(�≤105)n(n≤105) 篇文章(编号为 1 到 �n)以及 �(�≤106)m(m≤106) 条参考文献引用关系。目前小 K 已经打开了编号为 1 的一篇文章,请帮助小 K 设计一种方法,使小 K 可以不重复、不遗漏的看完所有他能看到的文章。

这边是已经整理好的参考文献关系图,其中,文献 X → Y 表示文章 X 有参考文献 Y。不保证编号为 1 的文章没有被其他文章引用。

请对这个图分别进行 DFS 和 BFS,并输出遍历结果。如果有很多篇文章可以参阅,请先看编号较小的那篇(因此你可能需要先排序)。

输入格式

共 �+1m+1 行,第 1 行为 2 个数,�n 和 �m,分别表示一共有 �(�≤105)n(n≤105) 篇文章(编号为 1 到 �n)以及�(�≤106)m(m≤106) 条参考文献引用关系。

接下来 �m 行,每行有两个整数 �,�X,Y 表示文章 X 有参考文献 Y。

输出格式

共 2 行。 第一行为 DFS 遍历结果,第二行为 BFS 遍历结果。

输入输出样例

输入 #1复制

8 9
1 2
1 3
1 4
2 5
2 6
3 7
4 7
4 8
7 8

输出 #1复制

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

1. 该题就是一个图的遍历问题,两种遍历方法,bfs和dfs。

2.说到bfs和dfs我们就来简单的介绍一下它们。

bfs(广度优先搜索):该算法从根节点开始遍历整个图形或树,并按照距离根节点的距离逐层遍历整个图形或树。一般使用队列来实现,首先将根节点加入队列中,然后处理队列中的所有节点,将它们相邻的节点加入队列中,以此类推,直到队列为空或者找到目标节点为止。

dfs(深度优先搜索):该算法从图的某个顶点出发,沿着一条路尽可能深的访问图中的节点,直到该路径已经访问到不能再访问的节点为止,然后回溯到前面的节点,再尝试访问其他路径,直到图中所有的节点都被访问过。

3.该题目同样要使用邻接表,因为数据太大。建好表以后直接调用bfs和dfs的函数然后输出即可。需要注意的是,该题目有个条件,访问时需要按照从小到大的顺序,所以输入两个顶点时需要对它们进行排序,首先按照第一个顶点排序,如果第一个顶点相等就按照第二个点排,但是非常重要的一点是,由于我的邻接表是采用的头插法,先插入表的反而在边表的后面,所以我在排序时要从大到小排。

#include"stdio.h"
#include"stdlib.h"
#define MAX 100005 
struct b
{int v,u;
}r[MAX];
struct bb//边表节点 
{int data;struct bb *next;
};
typedef struct dd//顶点表 
{int data;struct bb *firstpoint;
}headlist[MAX];
struct graph
{headlist A;int d,b;
};
void sort(struct b *a,int n)
{int i,j;struct b t;for(i=1;i<=n;i++){for(j=i+1;j<=n;j++)if(a[i].v>a[j].v) {t=a[i];a[i]=a[j];a[j]=t;}else if(a[i].v==a[j].v&&a[i].u<a[j].u) {t=a[i];a[i]=a[j];a[j]=t;}}
//	for(i=1;i<=n;i++) printf("%d %d\n",a[i].v,a[i].u);
}
int vis[MAX]={0};
void dfs(struct graph *G,int i)
{struct bb *p;vis[i]=1;printf("%d ",G->A[i].data);p=G->A[i].firstpoint;while(p){if(!vis[p->data])dfs(G,p->data);p=p->next;}	
}
void bfs(struct graph *G)
{int i,j,que[MAX]={0};struct bb *p;int head=1,tail=1;for(i=1;i<=G->d;i++)vis[i]=0;for(i=1;i<=G->d;i++){if(vis[i]==0){vis[i]=1;printf("%d ",G->A[i].data);que[tail]=i;tail++;while(tail>head){j=que[head];head++;p=G->A[j].firstpoint;while(p){if(!vis[p->data]){vis[p->data]=1;printf("%d ",G->A[p->data].data);que[tail]=p->data;tail++;}p=p->next;}}}}
}
int main()
{int i,j,vu[MAX][2];struct bb *e;struct graph G;scanf("%d %d",&G.d,&G.b);for(i=1;i<=G.d;i++){G.A[i].data=i;G.A[i].firstpoint=NULL;}for(i=1;i<=G.b;i++)//存边 {scanf("%d %d",&r[i].v,&r[i].u);}sort(r,G.b);//for(i=1;i<=G.b;i++) printf("%d %d\n",r[i].v,r[i].u);for(j=1;j<=G.b;j++){//scanf("%d %d",&v,&u);e=(struct bb*)malloc(sizeof(struct bb));e->data=r[j].u;e->next=G.A[r[j].v].firstpoint;G.A[r[j].v].firstpoint=e;//	e=(struct bb*)malloc(sizeof(struct bb));//	e->data=v;//	e->next=aG.A[u].firstpoint;//	G.A[u].firstpoint=e;}	for(i=1;i<=G.d;i++) if(vis[i]==0) dfs(&G,i);printf("\n");bfs(&G);
}

 

相关文章:

P5318 【深基18.例3】查找文献

题目描述 小K 喜欢翻看洛谷博客获取知识。每篇文章可能会有若干个&#xff08;也有可能没有&#xff09;参考文献的链接指向别的博客文章。小K 求知欲旺盛&#xff0c;如果他看了某篇文章&#xff0c;那么他一定会去看这篇文章的参考文献&#xff08;如果他之前已经看过这篇参考…...

Error caught was: No module named ‘triton‘

虽然报错但是不影响程序运行&#xff1a; A matching Triton is not available, some optimizations will not be enabled. Error caught was: No module named triton解决&#xff1a; pip install -i https://pypi.tuna.tsinghua.edu.cn/simple triton2.0.0.dev20221120...

Ruby设计-开发日志

Log 1 产品 Product 1.1 创建 Product 创建名为 project 的 rails 应用 rails new project创建 Product 模型 rails generate scaffold Product title:string description:text image_url:string price:decimal这会生成一个 migration &#xff0c;我们需要进一步修改这个…...

SpringBoot 调用外部接口的三种方式

方式一&#xff1a;使用原始httpClient请求 /** description get方式获取入参&#xff0c;插入数据并发起流程* params documentId* return String*/ RequestMapping("/submit/{documentId}") public String submit1(PathVariable String documentId) throws ParseE…...

C 中的结构体

C 中的结构体 C 数组允许定义可存储相同类型数据项的变量&#xff0c;结构是 C 编程中另一种用户自定义的可用的数据类型&#xff0c;它允许您存储不同类型的数据项。 结构体中的数据成员可以是基本数据类型&#xff08;如 int、float、char 等&#xff09;&#xff0c;也可以…...

nodejs安装教程

Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行时&#xff0c;可以用于在服务器端运行 JavaScript 代码。以下是 Node.js 的安装教程&#xff1a; 步骤 1&#xff1a;下载 Node.js 访问 Node.js 的官方网站 https://nodejs.org/&#xff0c;进入官方下载页面。 在下载页…...

【华为OD机试】1029 - 整数与IP地址间的转换

文章目录一、题目&#x1f538;题目描述&#x1f538;输入输出&#x1f538;样例1二、代码参考作者&#xff1a;KJ.JK&#x1f308; &#x1f308; &#x1f308; &#x1f308; &#x1f308; &#x1f308; &#x1f308; &#x1f308; &#x1f308; &#x1f308; &#x…...

【FPGA实验1】FPGA点灯工程师养成记

对于FPGA几个与LED相关的实验&#xff08;包括按键点灯、流水灯、呼吸灯等&#xff09;的记录&#xff0c;方便日后查看。这世界上就又多了一个FPGA点灯工程师了&#x1f60f; 成为一个FPGA点灯工程师分三步&#xff1a;一、按键点灯1、按键点灯程序2、硬件实现二、流水灯1、流…...

操作系统论文导读(三):Stack-based scheduling of realtime processes基于堆栈的实时进程调度

目录 一、论文核心思想&#xff1a; 二、基本的相关条件 作业运行的条件&#xff1a; 作业抢占其他作业的条件&#xff1a; 三、基本的相关定义 四、基本的相关调度 五、基本的相关调度 六、堆栈资源共享 七、与PCP的比较 一、论文核心思想&#xff1a; -引入了一个抢占优…...

音频延时测试方法与实现

音频延时测试方法有以下几种 1、使用专业的测试设备&#xff0c;通过专业的音频测试仪器可以准确测量音频延时&#xff0c;如常见声学分析仪、信号发生器、声卡Smaart&#xff08;介绍测试延时方法链接&#xff1a;https://blog.csdn.net/weixin_48408892/article/details/1273…...

在 Python 中管理机密的四种方法

我们生活在一个应用程序用于做任何事情的世界&#xff0c;无论是股票交易还是预订沙龙&#xff0c;但在幕后&#xff0c;连接是使用秘密完成的。必须适当管理机密&#xff0c;例如数据库密码、API 密钥、令牌等&#xff0c;以避免任何泄露。 管理机密的需求对任何组织都至关重…...

全国青少年信息素养大赛Python编程挑战赛初赛试题说明

Python 编程挑战赛初赛采用线上考试比赛形式,分为小学组和初中组。不同组别的考核重难点略有不同,考核内容主要是 Python 基础知识,共 30 题,均为单选题,具体考核如下: 小学组考核内容主要是 Python 基础知识,包括输入输出,变量,条件结构,计次循环和无限循环,海龟库…...

无需魔法打开即用的 AI 工具集锦

作者&#xff1a;明明如月学长&#xff0c; CSDN 博客专家&#xff0c;蚂蚁集团高级 Java 工程师&#xff0c;《性能优化方法论》作者、《解锁大厂思维&#xff1a;剖析《阿里巴巴Java开发手册》》、《再学经典&#xff1a;《EffectiveJava》独家解析》专栏作者。 热门文章推荐…...

如何进行SEO站内优化,让你的网站更易被搜索引擎收录

我们了解了 SEO 的流程&#xff0c;知道了哪些元素对 SEO 的效果会产生关键影响&#xff0c;接下来&#xff0c;我们就该正式开始动手&#xff0c;打造一个让搜索引擎“爱不释手”的网站。 为了方便理解与记忆&#xff0c;我们将网站划分为几个模块&#xff0c;告诉你优化网站…...

组件内部watch后切换数据报错Error in callback for watcher “xxxx“

报错信息&#xff1a; 报错代码&#xff1a; 百度了一下是因为这里写了箭头函数&#xff0c;导致this指向为父级作用域上下文&#xff0c;不是vue实例导致 修改为&#xff1a; progressData: {handler: function(newValue, oldValue) {this.setChartData(newValue)},deep: …...

VMware ESXi 7.0 U3l macOS Unlocker OEM BIOS (标准版和厂商定制版)

VMware ESXi 7.0 U3l macOS Unlocker & OEM BIOS (标准版和厂商定制版) 提供标准版和 Dell (戴尔)、HPE (慧与)、Lenovo (联想)、Inspur (浪潮)、Cisco (思科) 定制版镜像 请访问原文链接&#xff1a;https://sysin.org/blog/vmware-esxi-7-u3-oem/&#xff0c;查看最新版…...

华为阿里版ChatGPT横空出世,谁的成效更好呢?

“你训练的大模型涌现了吗&#xff1f;”“还没有。好难受。”一时间成为了最近AI赛道玩家的一个爆热梗。 不管承不承认&#xff0c;相信每个玩家都不愿意输掉这场激烈的竞争。自百度成为国内“第一个吃螃蟹的人”后&#xff0c;又有两大中国科技巨头做好了准备——华为和阿里…...

【云原生之Docker实战】使用docker部署kooteam在线团队协作工具

【云原生之Docker实战】使用docker部署kooteam在线团队协作工具 一、kooteam介绍1.kooteam介绍2.kooteam的技术选型二、检查本地docker环境1.检查Docker版本2.检查Docker状态三、下载kooteam镜像四、部署kooteam文档管理系统1.创建安装目录2.创建mysql数据库3.新建kooteam数据库…...

ITSS认证是什么认证,itss资质认证

一、ITSS是什么 ITSS根据英文翻译信息技术服务标准&#xff08;InformationTechnologyServiceStandards&#xff0c;简称ITSS&#xff09;&#xff0c;它既是一套成体系和综合配套的标准库&#xff0c;又是一套选择和提供IT服务的方法学&#xff0c;对企业IT服务而言&#xff0…...

FTP-----局域网内部远程桌面

此文包含详细的图文教程。有疑问评论区留言。博主第一时间解决。 目录 一、被远程桌面的电脑 1.开启远程权限 2.添加账户&#xff0c;有本地账户跳过这步 3.帐号隶属于 远程桌面 4.帐号隶属于 本地用户组 二、本地电脑连接远程桌面 前提条件&#xff1a; 1.两台电脑在…...

LLM Notebooks:从零构建RAG问答系统的实践指南

1. 项目概述&#xff1a;一个面向大语言模型实践的“笔记本”仓库最近在GitHub上闲逛&#xff0c;发现了一个挺有意思的仓库&#xff0c;叫qianniuspace/llm_notebooks。光看名字&#xff0c;llm_notebooks&#xff0c;大语言模型笔记本&#xff0c;这指向性就非常明确了。这大…...

从零构建AOD-Net:PyTorch实战图像去雾模型开发全流程

1. 环境准备与数据理解 在开始构建AOD-Net之前&#xff0c;我们需要先搭建好开发环境。推荐使用Anaconda创建独立的Python环境&#xff0c;避免与其他项目产生依赖冲突。这里我选择Python 3.8和PyTorch 1.12的组合&#xff0c;这个版本经过实测在图像处理任务中表现稳定。 安装…...

Go语言开源漏洞扫描器Abyss-Scanner:架构解析与CI/CD集成实践

1. 项目概述&#xff1a;一个为安全而生的开源漏洞扫描器最近在整理自己的开源项目工具箱&#xff0c;发现一个挺有意思的工具&#xff0c;叫 Abyss-Scanner。这名字起得挺有深意&#xff0c;“深渊扫描器”&#xff0c;听起来就有点探索未知、发现潜在风险的味道。简单来说&am…...

终极指南:使用Python开源工具破解百度网盘限速,实现高速免费下载

终极指南&#xff1a;使用Python开源工具破解百度网盘限速&#xff0c;实现高速免费下载 【免费下载链接】baidu-wangpan-parse 获取百度网盘分享文件的下载地址 项目地址: https://gitcode.com/gh_mirrors/ba/baidu-wangpan-parse 还在为百度网盘几十KB的下载速度而烦恼…...

开源办公套件自动化部署与集成实战:基于OpenOffice的服务化解决方案

1. 项目概述&#xff1a;为什么我们需要一个“开源”的办公套件&#xff1f;如果你在GitHub上搜索过办公软件相关的仓库&#xff0c;大概率会看到过longyangxi/OpenOffice这个项目。乍一看&#xff0c;你可能会以为这是一个Apache OpenOffice的镜像或者某个分支。但点进去仔细研…...

OCT-X算法:早期胃癌AI检测的技术突破与应用

1. OCT-X算法&#xff1a;早期胃癌AI检测的技术突破在医疗影像分析领域&#xff0c;胃癌早期检测一直面临着巨大挑战。传统内窥镜检查依赖医生经验判断&#xff0c;存在主观性强、漏诊率高等问题。我们团队开发的OCT-X&#xff08;One Class Twin Cross Learning&#xff09;算…...

开源婚礼技能库:用项目管理思维破解备婚焦虑,打造个性化高性价比婚礼

1. 项目概述&#xff1a;婚礼技能库的诞生与价值最近在GitHub上看到一个挺有意思的项目&#xff0c;叫“awesome-wedding-skills”。光看名字&#xff0c;你可能会觉得这又是一个普通的“awesome”系列资源列表&#xff0c;无非是收集一些婚礼策划、摄影、化妆的链接。但当我点…...

WarcraftHelper:魔兽争霸3终极增强插件5分钟快速上手指南

WarcraftHelper&#xff1a;魔兽争霸3终极增强插件5分钟快速上手指南 【免费下载链接】WarcraftHelper Warcraft III Helper , support 1.20e, 1.24e, 1.26a, 1.27a, 1.27b 项目地址: https://gitcode.com/gh_mirrors/wa/WarcraftHelper WarcraftHelper是一款专为魔兽争…...

中鼎智能冲刺港股:年营收18.8亿 诺力股份是实控股东

雷递网 雷建平 5月16日中鼎智能&#xff08;无锡&#xff09;科技股份有限公司&#xff08;简称&#xff1a;“中鼎智能”&#xff09;日前更新招股书&#xff0c;准备在港交所上市。截至2026年3月31日止三个月&#xff0c;与上年同期相比&#xff0c;中鼎智能录得相对稳定的收…...

用Git和Markdown构建个人知识库:Wandercode项目实践指南

1. 项目概述&#xff1a;从“漫游代码”到个人知识管理系统的蜕变最近在GitHub上看到一个挺有意思的项目&#xff0c;叫“Wandercode”&#xff0c;直译过来就是“漫游代码”。乍一看这个标题&#xff0c;可能会让人联想到某种代码生成器或者自动化脚本工具。但当我深入探究其仓…...