ACM模板——无向图连通判断法(或求连通分支个数) - 并查集

简介: ACM模板——无向图连通判断法(或求连通分支个数) - 并查集
#include<bits/stdc++.h>
#include<cmath>
#define mem(a,b) memset(a,b,sizeof a);
#define INF 0x3f3f3f3f
using namespace std;
typedef long long ll;
const int maxn=1010;
int n,m;
int pre[maxn];
void init()
{
    for(int i=1;i<=n;i++) pre[i]=i;
}
int find(int x)
{
    return pre[x]==x?x:pre[x]=find(pre[x]);
}
int main()
{
    while(~scanf("%d%d",&n,&m))
    {
        init();
        int u,v;
        for(int i=0;i<m;i++)
        {
            scanf("%d%d",&u,&v);
            pre[find(u)]=pre[find(v)]; // 合并为同一个根
        }
        int cnt=0;
        for(int i=1;i<=n;i++) // 统计 root 结点个数
            if(pre[i]==i)
            {
                cnt++;
                if(cnt>1) break;
            }
        puts(cnt==1?"YES":"NO");
    }
    return 0;
}
目录
相关文章
|
7月前
|
算法
Hierholzer算法dfs找欧拉回路模板
Hierholzer算法dfs找欧拉回路模板
78 0
|
7月前
【每日一题Day287】LC24 两两交换链表中的节点 | 模拟 递归
【每日一题Day287】LC24 两两交换链表中的节点 | 模拟 递归
49 0
|
6月前
|
存储 C语言
数据结构学习记录——图的遍历(深度优先搜索、广度优先搜索、为什么需要两种遍历、图不连通怎么办)
数据结构学习记录——图的遍历(深度优先搜索、广度优先搜索、为什么需要两种遍历、图不连通怎么办)
72 0
|
7月前
|
人工智能 算法 BI
【广度优先搜索】【二分图】【并集查找】2493. 将节点分成尽可能多的组
【广度优先搜索】【二分图】【并集查找】2493. 将节点分成尽可能多的组
|
7月前
|
机器学习/深度学习 算法 测试技术
【图轮】【 最小生成树】【 并集查找】1489. 找到最小生成树里的关键边和伪关键边
【图轮】【 最小生成树】【 并集查找】1489. 找到最小生成树里的关键边和伪关键边
|
7月前
|
算法 测试技术 C#
【动态规划】【广度优先搜索】LeetCode:2617 网格图中最少访问的格子数
【动态规划】【广度优先搜索】LeetCode:2617 网格图中最少访问的格子数
|
7月前
|
算法 NoSQL 容器
状态定义与深度优先搜索、广度优先搜索
状态定义与深度优先搜索、广度优先搜索
|
7月前
【每日一题Day311】LC1761一个图中连通三元组的最小度数 | 枚举
【每日一题Day311】LC1761一个图中连通三元组的最小度数 | 枚举
54 0
|
7月前
|
存储 机器学习/深度学习 人工智能
无向图的邻接矩阵可用一维数组存储
无向图的邻接矩阵可用一维数组存储
301 0
|
算法
代码随想录算法训练营第十八天 | 力扣 513. 找树左下角的值、112. 路径总和、113. 路径总和 II、106. 从中序与后序遍历序列构造二叉树、105. 从前序与中序遍历序列构造二叉树
代码随想录算法训练营第十八天 | 力扣 513. 找树左下角的值、112. 路径总和、113. 路径总和 II、106. 从中序与后序遍历序列构造二叉树、105. 从前序与中序遍历序列构造二叉树
57 0