第十一章:图论part06 108.冗余连接 109.冗余连接II (补)

任务日期:7.31

题目一链接: 108. 冗余连接 (kamacoder.com)

思路:从前到后遍历边,如果当前两个点不在一个集合就使他们加入到一个集合,构成树,如果位于一个集合则输出他们,因为如果把他们加入就会形成环

代码:

cpp 复制代码
#include <bits/stdc++.h> 
using namespace std;
std::vector<int> father(1010,0);//按照节点大小范围定义数组
int n;

void unit() {
    for(int i = 0;i < n;i ++) {
        father[i] = i;
    }
}

int find(int u) {//寻找u的根节点
    return u == father[u] ? u : find(father[u]);//压缩距离:递归到下一层
}

void joint(int u,int v) {
    u = find(u);//这样节约空间不用重新定义新变量
    v = find(v);
    if(u == v) return;
    else father[v] = u;
}

bool issame(int u,int v) {
    u = find(u);
    v = find(v);
    return u == v;//bool函数可以返回true或者false
}

int main() {
    cin>>n;
    unit();
    for(int i = 0;i < n;i ++) {
        int s,t;
        cin>>s>>t;
        if(issame(s,t)) {//如果两个节点在一个集合
            cout<<s<<" "<<t;
            return 0;//从前往后找第一组符合条件的数据就是答案
        }
        else joint(s,t);//不在一个集合那么就使加入到一个集合以组成树
    }
}

难点:

解释细节1:




题目二链接:

思路:

代码:

难点:

解释细节1:




题目三链接:

思路:

代码:

难点:

解释细节1:

相关推荐
故事和你911 天前
洛谷-【图论2-1】树4
开发语言·数据结构·c++·算法·动态规划·图论
故事和你911 天前
洛谷-【图论2-1】树1
开发语言·数据结构·c++·算法·深度优先·动态规划·图论
YuanDaima20481 天前
图论基础原理与题目说明
数据结构·人工智能·python·算法·图论·手撕代码
hnjzsyjyj2 天前
洛谷 T145300:这是一棵树吗? ← 图论握手定理
图论·握手定理
故事和你912 天前
洛谷-【图论2-1】树2
开发语言·数据结构·c++·算法·动态规划·图论
刀法如飞3 天前
Ontology本体论是什么数据结构?Palantir 技术原理介绍
数据结构·人工智能·ai编程·图论
khalil10203 天前
代码随想录算法训练营Day-50 图论02 | 99.岛屿数量-深搜、99.岛屿数量-广搜 、100.岛屿的最大面积
数据结构·c++·算法·leetcode·深度优先·图论
khalil10204 天前
代码随想录算法训练营Day-49 图论01 | 图论理论基础、深搜理论基础、98. 所有可达路径、广搜理论基础
c++·算法·leetcode·深度优先·图论
洛水水4 天前
【力扣100题】27. 二叉树的最大深度
算法·leetcode·图论
故事和你914 天前
洛谷-【数据结构2-2】线段树2
开发语言·数据结构·算法·动态规划·图论