#wvtc2502. 我要成为数据结构大师

我要成为数据结构大师

我要成为数据结构大师

时间限制:1s

空间限制:125MB

当时考数据结构的时候,我当时给奇垦林写了个深度优先搜索,但是他看不懂当时就给我打了个叉,过了半个月找我才想起来“你那个好像是对的”

题目背景

从回忆中醒来,yqyq 望着数据结构考场上的题目“如何判断图中是否有环”这题想起来>老师 >老师 的话,什么什么深度优先搜索和。。。。什么算法来着,答案就在嘴边但是就是想不起来。但是 yqyq 想起来他的老师可是智慧与善良并存的牙晚期智慧与善良并存的牙晚期 ,要是我当场先手搓一个算法相比是可以让我过的把。众所周知O(n3)O(n^3)的复杂度可以维护99%的数据结构,所以多少也可以拿一半分。

yqyq当场就灵光乍现,假如我对传说中的最短路径算法进行一个改进,

DijkstraDijkstra算法是一种用于寻找图中两个节点之间最短路径的算法。其基本原理如下:

初始化

为每个节点分配一个距离值,初始时将起始节点的距离设为0,其他节点的距离设为无穷大(代表未知)。

建立一个未访问的节点集合,初始时包含所有节点。

访问节点

从未访问的节点中选择距离起始节点最近的节点,将其标记为访问过。

对于当前节点的每一个邻居:

计算从起始节点到该邻居的距离(当前节点的距离 + 当前节点到邻居的边的权重)。

如果计算得到的距离小于当前记录的距离,则更新该邻居的距离。

重复过程

重复步骤2,直到所有节点都被访问或找到目标节点的最短路径。

终止

当目标节点被访问时,算法停止,此时记录的距离即为最短路径。

那么我们只要在查询最短路径的返回查找这个点在不在路径上不就行了

题目描述

接下来你只需帮yq完成最后一步,写一个程序判断无向图中两个点是否连通

输入格式

我将给出一个整数nn ,有共nn个顶点,每个顶点都有编号,从1开始

我将给出一个整数mm,共有mm个边(无向图)

接下来mm行给出两个数aa,bb代表边的起始点和终点的编号

我将给出一个整数kk,接下来kk行代表kk组询问

每行给出两个数aa,bb代表边的这两点的编号

输出格式

输出kk行,对应kk个提问

可以连通则输出yesyes,不可以则输出nono

样例输入1

5
1
1 2
1
1 2

样例输入2

yes

显然有1~2的路径

数据范围及约定

1n,m,k50001\leq n,m,k\leq5000