当前位置: 首页 > 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.两台电脑在…...

Ubuntu20.04下HPC_SDK加速库安装避坑指南(附OpenACC测试代码)

Ubuntu 20.04下HPC_SDK加速库深度实战指南&#xff1a;从安装到OpenACC性能调优 在当今高性能计算领域&#xff0c;GPU加速已成为提升计算效率的关键技术。NVIDIA HPC SDK作为一套全面的开发工具包&#xff0c;为开发者提供了从编译器到性能分析的全套解决方案。本文将带您深入…...

AI辅助学术写作:Qwen3-0.6B-FP8搭配LaTeX生成论文章节与参考文献

AI辅助学术写作&#xff1a;Qwen3-0.6B-FP8搭配LaTeX生成论文章节与参考文献 写论文&#xff0c;尤其是写引言和参考文献&#xff0c;是不是让你特别头疼&#xff1f;对着空白的文档发呆&#xff0c;不知道从何下笔&#xff1b;或者为了找一篇关键的参考文献&#xff0c;在数据…...

从BiomixQA到黄帝内经:聊聊2024年那些‘小而美’的垂直医学问答数据集

2024医学垂直问答数据集全景&#xff1a;从BiomixQA到黄帝内经的实战选型指南 当ChatGPT在通用领域大放异彩时&#xff0c;医学AI的战场正悄然转向那些"小而美"的垂直数据集。不同于通用语料的粗放式训练&#xff0c;专业医学问答需要精确到细胞级的语义理解——一个…...

springboot+vue基于web的针对老年人的景区订票系统的设计与实现

目录系统功能模块划分关键技术实现特殊考量因素项目技术支持源码获取详细视频演示 &#xff1a;文章底部获取博主联系方式&#xff01;同行可合作系统功能模块划分 用户端功能&#xff08;老年人友好设计&#xff09; 注册登录&#xff1a;支持手机号验证、子女代注册、大字体…...

如何利用系统提示词革新开源项目的AI功能实现

如何利用系统提示词革新开源项目的AI功能实现 【免费下载链接】system_prompts_leaks 项目地址: https://gitcode.com/GitHub_Trending/sy/system_prompts_leaks 在人工智能技术快速发展的今天&#xff0c;系统提示词已成为解锁AI潜能的关键钥匙。对于开源项目而言&…...

【SpringAI篇04】:从内存到MySQL,构建可重启的智能对话系统

1. 为什么需要从内存存储升级到数据库持久化 刚开始接触SpringAI开发时&#xff0c;很多开发者都会选择默认的内存存储方案。这种方案简单直接&#xff0c;不需要额外配置数据库&#xff0c;特别适合快速原型开发。但当你真正要把应用部署到生产环境时&#xff0c;就会发现内存…...

如何彻底解决Cursor API限制问题:从免费到Pro的完整指南

如何彻底解决Cursor API限制问题&#xff1a;从免费到Pro的完整指南 【免费下载链接】cursor-free-vip [Support 0.45]&#xff08;Multi Language 多语言&#xff09;自动注册 Cursor Ai &#xff0c;自动重置机器ID &#xff0c; 免费升级使用Pro 功能: Youve reached your t…...

智能缓存加速:重新定义扩散模型推理效率

智能缓存加速&#xff1a;重新定义扩散模型推理效率 【免费下载链接】ComfyUI-TeaCache 项目地址: https://gitcode.com/gh_mirrors/co/ComfyUI-TeaCache 在AI创作领域&#xff0c;等待成为最大的创作阻力。当你使用扩散模型生成图像或视频时&#xff0c;是否曾因漫长的…...

YOLOv12涨点改进 | CVPR 2025 | 全网独家首发、Neck特征融合改进篇 | YOLOv12引入ADWM自适应双重加权融合模块,有效优化特征的加权与融合,减少冗余并增强目标特征

一、本文介绍 🔥本文给大家介绍使用ADWM模块改进YOLOv12目标检测网络模型,能够有效优化特征的加权与融合,减少冗余并增强目标特征的表现,提升目标检测的准确性和鲁棒性,特别是在多尺度、小目标和复杂背景下。通过ADWM的引入,YOLOv12的性能将得到显著改善,适应性和准确…...

隐私优先方案:OpenClaw+Qwen3-32B-RTX4090D离线处理医疗记录

隐私优先方案&#xff1a;OpenClawQwen3-32B-RTX4090D离线处理医疗记录 1. 为什么医疗数据必须留在本地&#xff1f; 去年协助某诊所搭建病历管理系统时&#xff0c;我亲历了一次数据泄露恐慌。当诊所负责人发现云端OCR服务商要求上传患者检查报告时&#xff0c;他立即叫停了…...