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

都匀住房和城乡建设厅网站网站建站前seo注意

都匀住房和城乡建设厅网站,网站建站前seo注意,长沙征帆网络,免费网站建设网站有那些并查集 并查集主要有三个功能。 寻找根节点,函数:find(int u),也就是判断这个节点的祖先节点是哪个将两个节点接入到同一个集合,函数:join(int u, int v),将两个节点连在同一个根节点上判断两个节点是否在…

并查集

并查集主要有三个功能。

  1. 寻找根节点,函数:find(int u),也就是判断这个节点的祖先节点是哪个
  2. 将两个节点接入到同一个集合,函数:join(int u, int v),将两个节点连在同一个根节点上
  3. 判断两个节点是否在同一个集合,函数:isSame(int u, int v),就是判断两个节点是不是同一个根节点

并查集可以解决的问题:两个节点是否在一个集合,也可以将两个节点添加到一个集合中。

难点在于根的路径压缩的理解

寻找图中是否存在路径 

1971. 寻找图中是否存在路径

有一个具有 n 个顶点的 双向 图,其中每个顶点标记从 0 到 n - 1(包含 0 和 n - 1)。图中的边用一个二维整数数组 edges 表示,其中 edges[i] = [ui, vi] 表示顶点 ui 和顶点 vi 之间的双向边。 每个顶点对由 最多一条 边连接,并且没有顶点存在与自身相连的边。

请你确定是否存在从顶点 source 开始,到顶点 destination 结束的 有效路径 。

给你数组 edges 和整数 nsource 和 destination,如果从 source 到 destination 存在 有效路径 ,则返回 true,否则返回 false 。

class Solution {
public:bool validPath(int n, vector<vector<int>>& edges, int source, int destination) {/*深搜 / 广搜这里选择使用并查集进行实现使用并查集判断两个元素是否在同一个集合内部:step1: 使用join(u,v)把每条边加入到并查集step2: 使用 isSame(int u,int v) 判断是否是同一个根【即是否属于同一个集合】*/// step0: 并查集初始化init(n);// step1: 把每条边加入并查集for(vector<int> edge : edges) { // 每个元素就是一条边join(edge[0],edge[1]);}// step2: 使用 isSame(int u,int v) 判断是否是同一个根return isSame(source, destination);}
private:vector<int> father  = vector<int>(200001,0) ; // 按照节点的大小定义数组长度void init(int n) { // 并查集初始化for(int i = 1; i <= n; i++) {father[i] = i; //初始化。每个元素都是自己的根}}// 并查集里寻找根的过程int find(int u) {return u== father[u] ? u : father[u] = find(father[u]);}// 判断 u 和 v 是否找到同一个根bool isSame(int u, int v) {u = find(u);v = find(v);return u == v;}// 把 v-> u 这条边加入并查集 father[v] = uvoid join(int u, int v) {// 先判断两个元素是否在同一个集合内部u = find(u);v = find(v);if(u == v) return;father[v] = u;}
};

冗余连接 

684. 冗余连接

树可以看成是一个连通且 无环 的 无向 图。

给定往一棵 n 个节点 (节点值 1~n) 的树中添加一条边后的图。添加的边的两个顶点包含在 1 到 n 中间,且这条附加的边不属于树中已存在的边。图的信息记录于长度为 n 的二维数组 edges ,edges[i] = [ai, bi] 表示图中在 ai 和 bi 之间存在一条边。

请找出一条可以删去的边,删除后可使得剩余部分是一个有着 n 个节点的树。如果有多个答案,则返回数组 edges 中最后出现的那个。

class Solution {public int[] findRedundantConnection(int[][] edges) {/**图论:删除相对于数来说的多余的一条边使用并查集的思想:把每条边都加入到其中,如果在加入的时候发现两个顶点已经同根;(即在一个并查集中)此时就说明这条边是一条冗余边,删除这条边即可*/int[] ans = null;init(edges.length);for(var edge : edges) {if(!join(edge[0],edge[1])) {ans = edge;break;}}return ans;}private int[] father;private void init(int vLen) { // 并查集的初始化 // 传入顶点数father = new int[vLen+1];for(int i=0; i < vLen; i++) {father[i] = i; // father[i] = i; 自身是自身的根,即刚开始所有节点都是单项的}}// 找到一个元素的根int find(int u) {return father[u] == u ? u: (father[u] = find(father[u]));}// 把 u->v 加入并查集private boolean join(int u, int v) {u = find(u);v = find(v);if(u == v) return false;father[u] = v;return true;}// 判断两个节点是否同根public boolean isSame(int u, int v) {u = find(u);v = find(v);return u == v;}
}

http://www.yayakq.cn/news/339760/

相关文章:

  • 唐山网站定制建设工程查询网站
  • 网站的代码在哪里设置十大永久免费网络游戏
  • 行业门户网站程序工业控制软件开发
  • 凡科网站开发有哪些网站可以自己做加视频
  • 免费的个人简历模板网站《小城镇建设》》杂志社网站
  • 免费域名注册网站源码湖北城乡住房建设厅网站
  • 做网站服务器的配置重庆新闻频道在线直播观看
  • 网站假备案举报西凤酒网站建设
  • 锡林浩特建设局网站asp企业建站系统
  • 房地产网站方案网络营销的特征和功能
  • 给别人做违法网站代码wordpress
  • 医院网站建设套餐方案做h5页面网站有哪些
  • 上虞建设局网站网站底部版权信息模板
  • 企业网站建设需要多少钱山东竞价推广公司
  • 判断网站 是否用wordpress 建站工业设计代做网站
  • 广州seo网站设计网站建设搭配
  • 盐城网站建设咨询贵阳专业网站建设公司哪家好
  • 香山网站建设上海公司牌照价格
  • 手机网站定制怎么看网站用哪个系统做的
  • 成都企业网站设计制作做文交所的都有哪些网站
  • 织梦做淘宝客网站视频WordPress 5.0.1怎麼使用
  • 企业手机网站建设案例广州番禺区详细地图
  • 沛县做网站xlec阳江网络问政平台回复查询
  • 网视易网站建设建设一个外贸网站.
  • 厦门哪些企业做视频网站的珠海网站建设的公司哪家好
  • 怎样登录住房和城乡建设部网站企业网站推广公司 知乎
  • 网站宽度960wordpress禁用评论
  • 广东网站建设怎么选聚名网页版
  • 建设手机银行的网站手机app客户端做网站
  • 西宁哪家网络公司做网站好网络系统集成论文