首页 > 其他分享 >C - Roads and Libraries HackerRank - torque-and-development 【 并查集 】

C - Roads and Libraries HackerRank - torque-and-development 【 并查集 】

时间:2023-02-14 13:33:38浏览次数:57  
标签:development HackerRank 图书馆 ll 查集 fa clib fin lld

C - Roads and Libraries

 HackerRank - torque-and-development 

题意:给一堆点与点之间有没有边,在某一些地方建图书馆,最后让每个城市都可以到达有图书馆的地方,每个点都可以建图书馆,也可以不建,在两个点之间建一条路,这样在任意一个点建一个图书馆就可以了。现在图书馆和路的花费给出来,为了让所有的点都可以到达图书馆,找一个最小答案。

题解:用并查集合并一下,就可以了。判断一下是建一条路贵还是建图书馆贵。

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const ll maxn =100005;
ll fa[maxn];
ll fin(ll x)
{
    return x == fa[x] ? x : fa[x] = fin(fa[x]);
}
void Un(ll x, ll y)
{
    ll a = fin(x);
    ll b = fin(y);
    if(a != b)
    {
        fa[a] = b;
    }
    return ;
}
int main()
{
    ll t,u,v;
    ll n,m,croad,clib;
    scanf("%lld", &t);
    while(t--)
    {
        scanf("%lld %lld %lld %lld", &n, &m, &clib, &croad);
        ll num = 0;
        num = n * clib;

        for(ll i = 1; i <= n; i ++) fa[i] = i;
        for(ll i = 0; i < m; i ++)
        {
            scanf("%lld %lld", &u, &v);
            Un(u,v);
        }
        if(clib <= croad)
        {
            printf("%lld\n",num);
        }
        else
        {
            ll sum = 0;
            for(ll i = 1; i <= n; i ++)
            {
                if(fa[i] == i) sum += clib;
                else sum += croad;
            }
            printf("%lld\n",sum);
        }
    }
    return 0;
}

 

 

标签:development,HackerRank,图书馆,ll,查集,fa,clib,fin,lld
From: https://blog.51cto.com/u_15965659/6056723

相关文章

  • A Hasty Introduction to Web Development
    DefinitionsYeah,someofthesemightbesilly,butlet'sdothis!What'sthedifferencebetweentheinternetandtheweb(I'mreallyaskingthis). →thein......
  • Codeforces Round #851 (Div. 2)-F. XOR, Tree, and Queries-树、异或、并查集
    题目:https://codeforces.com/contest/1788/problem/F题解:(首先他和线性基没什么瓜系)想这个问题大概可以分成几个部分:1、很自然地考虑记\(p_x\)表示从根节点走到x路径......
  • 「AcWing学习记录」并查集
    并查集1.将两个集合合并2.询问两个元素是否在一个集合当中时间复杂度近乎O(1)基本原理每个集合用一棵树来表示。树根的编号就是整个集合的编号,每个节点存储它的父节点......
  • 并查集
    一、什么是并查集什么是并查集?字面意思把一堆东西  合并  、  查找二、并查集讲解前置知识点1.可以把并查集的实现理解为在合并几棵树2.需要用到fa数组,fa[i......
  • 并查集
    并查集大佬笔记如下:通俗易懂https://zhuanlan.zhihu.com/p/93647900并查集是什么?主要用于解决一些元素分组的问题。它管理一系列不相交的集合,并支持两种操作:合并:把......
  • 【YBT2023寒假Day8 C】图论题(图论)(并查集)(线段树合并)
    图论题题目链接:YBT2023寒假Day8C题目大意给你一个无向图,然后你会一直操作直到无法操作,每次找出一个满足条件的三元组(a,b,c),满足a<b<c,a,b与a,c之间有边,b,c之间没......
  • 2021 年百度之星·程序设计大赛 - 初赛二 1003 魔怔(并查集,联通性,欧拉回路)
    problemsolution发现除了起点和终点,剩下所有点周围的边都会被恰经过偶数次,所以这些点初始连向了偶数条白边。考虑由白边连接形成的图,每个连通块中度数为奇数的点一定为偶数......
  • 【Baltic2003】【BZOJ1370】Gang团伙(并查集,拆点)
    problem给定n个人朋友的朋友是朋友,敌人的敌人是朋友朋友之间组成一个团伙,求团伙数solution将每个点x拆成两个:x和x+n(分别表示x的朋友和敌人)如果x和y是朋友,就将x和y合并如果x......
  • 并查集判断(DSU)二分图
    并查集(DSU)判断二分图题目链接二分图性质当且仅当图中不存在奇数环偶数环时可以扭成这样但奇数环则不可以从染色法的角度来考虑:假设一个二分图中左边标号为1......
  • 种类并查集 洛谷 P2024 食物链
    题目描述动物王国中有三类动物A,B,C,这三类动物的食物链构成了有趣的环形。A吃B,B吃C,C吃A。现有N个动物,以1-N编号。每个动物都是A,B,C中的一种,但是我们并不知道......