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

leetcode 547. 省份数量

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

leetcode 547. 省份数量

题目链接:https://leetcode.cn/problems/number-of-provinces/
题目描述:

解题思路:
其实就是求联通分量,咱们可以用bfs或者dfs跑,看几遍能跑完就有几个联通分量,也可以使用并查集。
BFS代码如下
class Solution {
public:
    int bk[205];
    queueq;
    int findCircleNum(vector>& isConnected) {
        int n,m;
        n=isConnected.size();
        m=isConnected[0].size();
        int ans=0;
        for(int i=0;i
            if(bk[i]==0){
                ans++;
                q.push(i);
                bk[i]=1;
            }
            while(q.size()){
                int k=q.front();
                q.pop();
                for(int i=0;i
                    if(isConnected[k][i]&&bk[i]==0){
                        bk[i]=1;
                        q.push(i); 
                    }
                }
            }
        }
        return ans;
    }
};
并查集代码如下:
class Solution {
public:
    int fa[205];
    setp;
    int getf(int q){
    if(fa[q]==q) return q;
    return fa[q]=getf(fa[q]);
    }
    void  mer(int x,int y){
        int newx=getf(x);
        int newy=getf(y);
        if(newx==newy) return ;
        if(newx>newy){
            fa[newy]=newx;
        }else{
            fa[newx]=newy;
        }
    }
    int findCircleNum(vector>& isConnected) {
        int n,m;
        n=isConnected.size();
        m=isConnected[0].size();
        //cout<
            fa[i]=i;
        }
        for(int i=0;i
            for(int j=0;j
                if(isConnected[i][j]) mer(i,j);
            }
        }
        int ans=1;
        for(int i=0;i
            //cout< 

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

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

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