题解 | 连通图

连通图

https://www.nowcoder.com/practice/569e89823a5141fe8a11ab7d4da21edf

#include <iostream>
using namespace std;

const int N = 1010;
int p[N];
int find(int x) {
    if (p[x] != x)p[x] = find(p[x]);
    return p[x];
}
int main() {
    int n, m;
    while (cin >> n >> m) {
        if (n == 0 && m == 0)break;
        //并查集初始化
        for (int i = 1; i <= n; i++)
            p[i] = i;

        int x, y;
        while (m--) {
            cin >> x >> y;
            //合并边
            if (find(x) != find(y))p[find(x)] = find(y);
            }
        
        //合并完后看有几个根结点
        int count = 0;
        int root = 0;
        for (int i = 1; i <= n; i++) {
            if (root != find(i))count++, root = find(i);
        }
        if (count == 1)puts("YES");
        else puts("NO");
    }
}
// 64 位输出请用 printf("%lld")

全部评论

相关推荐

不愿透露姓名的神秘牛友
07-08 14:08
点赞 评论 收藏
分享
真起不了响亮的名字:九月份人家投秋招你投实习嘛,会不会有点晚了,算你九月份直接上岗,实习三个月后一月初去和别人抢秋招补录还是备战春招啊更别说休息一个月后还要重新复习八股和算法
点赞 评论 收藏
分享
05-25 10:45
门头沟学院 Java
Frank_zhan...:没实习一个项目肯定不够,可以再做一个轮子,技术栈再补一个mq,微服务,整体再换个简历模板,暑期尽量再找一个日常实习
无实习如何秋招上岸
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务