糖果

news/2025/3/5 11:07:23/

糖果


from https://ac.nowcoder.com/acm/contest/9983/G
时间限制:2s
空间限制:26MB

题目描述:

在一个幼儿园里面有n个小朋友,分别编号1,2,…,n。在这些小朋友中有一些小朋友互为朋友关系,总共有m对朋友。
作为幼儿园老师,你想买一些糖果分给小朋友,你知道第i个小朋友想要至少ai​个糖果,否则他就会不开心。
同时,如果一个小朋友得到的糖果数小于他某个朋友得到的糖果数,他也会不开心。
请问你最少买多少糖果才能保证每个小朋友都不会不开心呢?

输入格式:

第一行以空格分隔的两个整数n,m。
第二行以空格分隔的n个正整数ai​。
接下来m行每行以空格分隔的两个正整数u,v,代表u是v的朋友,v是u的朋友。
1≤n≤106
0≤m≤106
1≤ai≤109
1≤u,v≤n,u≠v

输出格式:

购买的最少糖果数以保证每个小朋友都不会不开心。

输入样例:

3 1
1 2 3
1 2

输出样例:

7

并查集,有朋友关系的(间接或直接),都放入到同一个集合,在分配糖果的时候,给集合中的每一个人都分配该集合中需要糖果最多的人的个数(一个人需要1个,一个人需要2个,那么给他们都分配2个,这样才能满足两个人都不生气)。

代码:
#include<cstdio>
#include<algorithm>
using namespace std;
int father[1000005];    //存储祖先节点索引
int maxn[1000005];      //存储该集合每个人所需最大糖果数
int from,to,x,y;        //from和to代表有朋友关系的两个人,x和y代表他们在树当中的祖先节点
int n,m;                //人数和关系数
long long sum = 0;      //统计需要糖果个数
int find(int x){        //查找父亲if(x == father[x])return x;return father[x] = find(father[x]);
}
int main(){scanf("%d %d",&n,&m);for(int i = 1;i <= n;++i)scanf("%d",maxn + i),father[i] = i;     //输入每个人需要的糖果数,并且将每个人的祖先定为自己for(int i = 1;i <= m;++i){                         //合并有朋友关系的人scanf("%d %d",&from,&to);x = find(from),y = find(to);if(x != y)father[x] = y;maxn[y] = max(maxn[y],maxn[x]);}for(int i = 1;i <= n;++i)sum += maxn[find(i)];                           //累加每个人所需最小糖果数printf("%lld",sum);return 0;
}

http://www.ppmy.cn/news/441730.html

相关文章

2023中国(上海)国际糖果及巧克力展览会

时 间&#xff1a;2023年6月6&#xff5e;8日 地 点&#xff1a;上海世贸展览馆 ◆ 》》》展会概况&#xff1a; 随着人们生活水平的不断提高以及新功能、新口味的糖果巧克力产品涌现&#xff0c;糖果及巧克力市场的需求正在进一步扩大。近几年&#xff0c;中国…

知识付费海哥:分享6个技巧,让你的课程卖爆

哈喽&#xff0c;大家好&#xff0c;我是海哥&#xff0c;知识付费变现创业教练&#xff0c;教育公司培训总监&#xff0c;从事知识付费变现咨询10年&#xff0c;已助力3000人实现知识付费变现。 课程要卖爆&#xff0c;课程策划为你分享6招&#xff0c;必知必会&#xff0c;缺…

三星三防s8计算机功能在哪里,三星s8三防版怎么样 三防版三星s8配置参数介绍...

三星s8三防版怎么样 三防版三星s8配置参数介绍 来源&#xff1a;www.18183.com作者&#xff1a;似水流年时间&#xff1a;2017-06-26 三星s8三防版怎么样呢&#xff1f;本文小编为您带来三星s8三防版怎么样 三防版三星s8配置参数介绍。 三星s8三防版怎么样呢?本文小编为您带来…

android系统应用s8,三星S8的预装软件终于可以卸载了

(原标题&#xff1a;不再“耍流氓”&#xff01;S8的预装软件终于可以卸载了) [摘要]原厂状态下有过多预装软件一直是三星手机的一个槽点&#xff0c;Galaxy S8已经发生了重大改变&#xff1a;允许用户卸载、关闭大多数预装软件。 据Android Authority网站报道&#xff0c;还记…

小米手机红米note9 pro连接android studio真机调试

前言 1.连接电脑 打开手机 选择“设置”->“我的设备”->“全部参数”->“MIUI版本”&#xff0c;狂点2~3下&#xff0c;手机提示&#xff1a;您已处于开发者模式&#xff0c;无需进行次操作 然后&#xff0c;返回“设置”->“更多设置”->“开发者选项” -&…

android+note2+分辨率,红米Note2屏幕尺寸是多少?红米Note2分辨率是多少?

小米红米Note2的屏幕尺寸是多少 小米红米Note2的屏幕尺寸是5.5英寸。 针对小米红米Note2的屏幕尺寸是多少的问题&#xff0c;小米红米Note2拥有时尚清新的5种颜色&#xff0c;凡是购买手机的用户&#xff0c;只需要再花费9.9元就可以购买一款彩色后壳。小米红米Note2标配3060mA…

MMORPG游戏优化报告

一、MMORPG手游总体性能开销分析 二、MMORPG手游CPU模块性能开销分析 三、MMORPG手游内存模块性能开销分析 四、MMORPG手游资源管理分析 五、UWA对于MMORPG手游研发团队的建议 一、MMORPG手游总体性能开销分析 iOS设备的CPU性能普遍高于Android设备&#xff0c;Android设备…

unity 材质球无法编辑_Unity技术分享(88)|耗时分析|修改材质球|加载资源..

原标题&#xff1a;Unity技术分享(88)|耗时分析|修改材质球|加载资源.. 原文链接&#xff1a;https://blog.uwa4d.com/archives/2152.html 我们将从日常技术交流中精选若干个开发相关的问题&#xff0c;建议阅读时间15分钟&#xff0c;认真读完必有收获。如果您有任何独到的见解…