pat甲级1013 判断图中有多少个连通分量

本文介绍了两种方法来判断图中连通分量的数量:1) 图的遍历,通过访问未标记顶点并更新其子图;2) 使用并查集,通过边连接顶点并统计独立集合。
摘要由CSDN通过智能技术生成

两种方法:
1、图的遍历:每遇到一个未被访问的顶点,连通分量统计加1,并把其子图中所有顶点置为已访问。
这里我没有把广度优先遍历单独写一个函数,是为了回避传二维数组的麻烦。
2、并查集:若两个顶点间有边,则union这两个顶点并压缩路径,最后统计独立集合的个数。

#include <cstdio>
#include <queue>

using namespace std;

const int maxv = 1001;

int N, M, K;
int graph[maxv][maxv] = {
   };

//删除city号顶点,判断图中剩下几个连通分量,返回要补上的边的个数
int check(int city);

int main(){
   
    scanf("%d%d%d", &N, &M, &K);
    while(M--){
   
        int v1, v2;
        scanf("%d%d"
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值