首页 > 试题广场 >

回路

[编程题]回路
  • 热度指数:7601 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解
牛牛在一个迷宫中,迷宫有 个格子,有 条通道,每条通道连接两个格子 , ,编号为 的格子与编号为 的格子可互相到达,每人每条通道只能走一次。
牛牛想知道,他是否能从 号格子出发回到  号格子

若能回到  号格子则返回Yes,否则返回No。

示例1

输入

[4, 4],[(1,2), (2, 3), (3,4),(4,1)]

输出

"Yes"

备注:

m对 u, v 互不相同
头像 诗云panther
发表于 2021-08-16 13:17:39
/** struct Point { int x; int y; Point(int xx, int yy) : x(xx), y(yy) {} }; /class Solution {public: /** 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 能回到1号 展开全文
头像 2019113916
发表于 2021-09-02 21:14:25
题意概述 n个结点,m条边,边所连接的两个结点之间可相互到达(无向边),且一条边只可走一次 若有从1号结点开始的回路则返回true,否则返回false 相关知识 图的深度优先搜索模板(邻接表实现)const int MAXV=1000; const int inf=0x3fffffff; in 展开全文
头像 摸鱼学大师
发表于 2021-08-26 15:10:07
题目的主要信息: n个节点,m条边,数组edge记录的是有边的两个节点 判断这个图是否有从1号节点开始的回路 方法一:dfs 具体做法: 首先我们构建图。然后从节点1开始进行深度优先搜索,遍历与其相连的每一个节点,每到一个节点不能遍历前序节点或者已经访问过的,然后每次需要判断是否回到了节点1,如 展开全文
头像 Rain-y
发表于 2020-06-20 14:19:55
参考了评论区的解法,画个解法示意图。解题思路: 首先假设 "1" 的第一阶邻居的每个 "2,3,4" 属于不同的连通区域,并把每个连通区域赋予一个 id 来标识。 把连通区域的标识通过 bfs 扩散开来。扩散的过程中检查是否存在该情况:一个点能被不同的连通区域赋值。存在该情况说明它们其实是一个连 展开全文
头像 Peterliang
发表于 2021-10-02 09:22:37
NC585 题解 | #回路# 题意分析 给我们一个图,现在需要我们从1号节点开始走,每条路只能走一边,问最后是否可以重新会到1号节点。简单来说,就是这个图上面是否存在一个环,1号节点是这个环上的点。图上的边没有重边。 思路分析 解法一 DFS 首先,这个题目说明了给出的边是没有重复的边的。 展开全文
头像 健谈的秋招侠胖乎乎
发表于 2021-09-06 17:19:50
class Point: def init(self, a=0, b=0): self.x = a self.y = b 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 能回到1号点返回 Yes,否则返回 No @param param int整型一维数组 param[ 展开全文
头像 AimerAimer
发表于 2021-09-30 21:16:54
题意:  给定n 个格子,m 条通道,并且每条通道只能走一次。 从1号格子出发,问能否回到 1 号格子。 若能回到 1 号格子则返回Yes,否则返回No。 思路:根据题意建图,用邻接表存储。 展开全文