栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

并查集(大裸题)

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

并查集(大裸题)

给你一个 n 个点,m 条边的无向图,求至少要在这个的基础上加多少条无向边使得任意两个点可达~

输入
4 2
1 2
3 4
输出
1

居然一开始看到没有立马想到并查集,ans=联通区域数-1;

ACCODE:

#include
using namespace std;
int fa[100010];
int n,m;
int find(int x){
    if(x==fa[x])return x;
    else return
        fa[x]=find(fa[x]);
}
void merge(int a,int b){
    fa[find(a)]=find(b);
}
int main(){
    cin>>n>>m;
    for(int i=1;i<=n;i++){
        fa[i]=i;
    }
    for(int i=1,a,b;i<=m;i++){
        cin>>a>>b;
        merge(a,b);
    }
    int cnt=0;
    for(int i=1;i<=n;i++){
        if(fa[i]==i)cnt++;
    }
    cout< 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/699309.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号