261. 以图判树

2023-11-02 08:48
文章标签 261 以图 判树

本文主要是介绍261. 以图判树,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

给定从 0 到 n-1 标号的 n 个结点,和一个无向边列表(每条边以结点对来表示),请编写一个函数用来判断这些边是否能够形成一个合法有效的树结构。

示例 1:

输入: n = 5, 边列表 edges = [[0,1], [0,2], [0,3], [1,4]]
输出: true

示例 2:

输入: n = 5, 边列表 edges = [[0,1], [1,2], [2,3], [1,3], [1,4]]
输出: false

注意:你可以假定边列表 edges 中不会出现重复的边。由于所有的边是无向边,边 [0,1] 和边 [1,0] 是相同的,因此不会同时出现在边列表 edges 中。

 

思路:让我们来判断其是否为一棵树,如果是树的话,所有的节点必须是连接的,也就是说必须是连通图,而且不能有环。

采用并查集来做,如果需要合并的两个节点位于同一个集合内,那说明有环存在。

最后找一下并查集一共有多少个老大,如果只有一个老大的话,那么说明所有的节点都是连在一起的,就是树。

class Solution {
public://找老大int find_father(vector<int> &f, int i){while(i!=f[i]){i=f[i];}return i;}bool validTree(int n, vector<vector<int>>& edges) {vector<int>f(n);//f存上级父节点,当f[i]=i时,说明是这个集合的老大//初始化f,每个节点都是自己的老大for(int i=0; i<n; ++i){f[i]=i;}//合并节点for(auto x:edges){int p=find_father(f, x[0]);int q=find_father(f, x[1]);if(p==q) return false;f[p]=q;}//找一共有多少个老大unordered_set<int>s;for(int i=0; i<f.size(); ++i){s.insert(find_father(f, i));}return s.size()==1;}
};

 

这篇关于261. 以图判树的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/329466

相关文章

Codeforces Round #261 (Div. 2)小记

A  XX注意最后输出满足条件,我也不知道为什么写的这么长。 #define X first#define Y secondvector<pair<int , int> > a ;int can(pair<int , int> c){return -1000 <= c.X && c.X <= 1000&& -1000 <= c.Y && c.Y <= 1000 ;}int m

使用 MobileNet和ImageHash做图片相似度匹配(以图搜图)

很多应用中有以图搜图的应用,那么我们应该如何实现呢? 传统的文本搜索主要是关键字匹配,而目前图片和音乐的搜索却使用使用特征向量的方式。 向量就是使用一组数从多个维度描述特征,虽然每个维度的含义我们可能无法得知,但是模型知道就足够了; 如果您的目标是快速比较两张图片的特征值,并且需要计算量较小的算法,那么使用较轻量级的模型或特征提取方法会更适合。以下是可选方案: 综合对比 图像哈希:适合快速

Leetcode 261.以图判树

Time: 20190903 Type: Medium 题目描述 给定从 0 到 n-1 标号的 n 个结点,和一个无向边列表(每条边以结点对来表示),请编写一个函数用来判断这些边是否能够形成一个合法有效的树结构。 示例 1: 输入: n = 5, 边列表 edges = [[0,1], [0,2], [0,3], [1,4]] 输出: true 示例 2: 输入: n = 5, 边列表

LeetCode 题解(261) : Game of Life

题目: According to the Wikipedia's article: "The Game of Life, also known simply as Life, is a cellular automaton devised by the British mathematician John Horton Conway in 1970." Given a board w

以图搜图 – 3大相似图片搜索引擎

以图搜图,顾名思义就是上传一张图片,网站搜索并显示与之类似的图片。看到一个可爱的卡通头像想搜出更多来?看看是不是用旧图片制作的新新闻?还有 很多用法就看大家的想象力啦。作者爱好搜集图片,最不能容忍的就是美图上面有水印,只要上传图片到以图搜图网站,轻轻一点便能搜出不带水印的图片。 下面就介绍3个相似图片搜索引擎,排名分先后,带有个人色彩,不过写这篇文章的时候特意在3个网站尝试搜索相同的5张图片进行

基于MATLAB内容CBIR的船舶检索技术[图像检索,以图搜图]

题目:基于内容CBIR的船舶检索技术 1、课题介绍 随着信息技术的不断发展,人们越来越依赖于计算机工作、生活,随之产生的数据量也呈指数级增长的趋势,因此,信息检索显得尤为重要。计算机中所存储的信息主要分为两大类:文本和图像,其中图像检索相较于文本检索更为复杂,因此如何更高效率、更快速地检索图像成为人们近年来研究的热点之一。其中的一种检索方法就是基于内容的图像检索技术(CBIR),它开始进入人们视线

261:vue+openlayers 使用setRotation旋转地图

第261个 点击查看专栏目录 本示例介绍演示如何在vue+openlayers中使用setRotation旋转地图。setRotation是view的一个方法,旋转的内容是弧度,这里设置的角度需要将其换算为弧度,即 x*Math.PI/180. 直接复制下面的 vue+openlayers源代码,操作2分钟即可运行实现效果 文章目录 示例效果图配置方式

261.【华为OD机试真题】跳马(广度优先搜索(BFS)-JavaPythonC++JS实现)

🚀点击这里可直接跳转到本专栏,可查阅顶置最新的华为OD机试宝典~ 本专栏所有题目均包含优质解题思路,高质量解题代码(Java&Python&C++&JS分别实现),详细代码讲解,助你深入学习,深度掌握! 文章目录 一. 题目二.解题思路三.题解代码Python题解代码JAVA题解代码C/C++题解代码JS题解代码 四.代码讲解(Java&Python&C++&JS分别讲解)

Codeforces Round #261 (Div. 2) E

E. Pashmak and Graph         题意:一个带权有向图,没有重边,没有自环。求图的最长路径长度,使得该路径每一条边权都严格递增。         思路:先排序,然后dp。dp[u]表示以u为起点的最长递增路径长度,len[u]表示以u为起点的最长递增路径的第一条边权。权值递减扫描所有边,状态转移:dp[u]=max(dp[u],dp[v]+1)(存在边uv且权w

Codeforces Round #261 (Div. 2) D

D. Pashmak and Parmida's problem         题意:n个整数a1~an。1<=i<j<=n,问有多少组i,j满足这样的情况:a1~ai中值为ai的数的个数大于aj~an中值为aj的数的个数。。是不是有点绕。。         思路:树状数组。为了做这题,恶补了一下线段树,树状数组,逆序数对的知识。。虽然搞了好久,也算值了。先统计f(1, i, ai)