小诚因为金铲铲D不到牌破产啦

news/2024/11/28 12:08:51/文章来源:https://www.cnblogs.com/gailixia/p/18574030

小诚因为金铲铲D不到牌破产啦

Description

小诚和他身边的朋友最近好像出了点经济问题……

已知小诚的人际关际网中包含 n* 个人(小诚也在其中),每个人手上现在有ai元,他们可以彼此之间互相借钱,他们只希望在最后手上恰好有 bi

众所周知,欠钱容易借钱难,没借到之前是孙子,借到了之后对面是孙子。所以两个人之间,如果不是关系密切的朋友,就无法放心地互相借钱,小诚通过摸索,知道了他们之间有 m 对关系密切的朋友。

请问所有的人能够通过互相借钱满足他们的需求吗?

注意,有的人可能一开始就是负债的状态,即aibi都有可能是负数

Input

第一行两个整数n,m分别表示人数和关系密切的朋友对数

接下来一行n个整数a1,a2,...,an,表示每个人手上初始有的钱

接下来一行 n个整数 b1,b2,...,bn,表示每个人手上最后希望恰好有的钱

接下来 m 行,每行两个整数 x,y,表示 xy 是关系密切的朋友

1≤n,m≤2e5 ,−1e9≤ai,bi≤1e9

Output

对于每一组数据,输出一行一个字符串,如果可以满足,输出"Yes",否则输出 "No"

Sample Input 1

3 2
1 2 3
2 2 2
1 2
2 3

Sample Output 1

Yes
#include <bits/stdc++.h>
using namespace std;
long long x,y,n,m;
vector<long long> a , b ,suma ,sumb;
vector<int> f;
int find(int x) {if (f[x]!= x) {f[x] = find(f[x]);}return f[x];
}
void baka(int x, int y) {int findX = find(x);int findY = find(y);if (findX!= findY) {f[findX] = findY;suma[findY] += suma[findX];sumb[findY] += sumb[findX];}
}int main() {scanf("%lld %lld", &n, &m);a.resize(n);b.resize(n);f.resize(n);suma.resize(n);sumb.resize(n);for (int i = 0; i < n; i++) {f[i] = i;scanf("%lld", &a[i]);suma[i] = a[i];}for (int i = 0; i < n; i++) {scanf("%lld", &b[i]);sumb[i] = b[i];}for (int i = 0; i < m; i++) {scanf("%lld %lld", &x, &y);baka(x, y);}for (int i = 0; i < n; i++) {int fumo = find(i);if (suma[fumo]!= sumb[fumo]) {printf("No\n");return 0;}}printf("Yes\n");return 0;
}



本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/842798.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

代码精简之路-责任链模式

前言 常说c#、java是面向对象的语言,但我们平时都是在用面向过程的思维写代码,实现业务逻辑像记流水账一样,大篇if else的判断;对业务没有抽象提炼、代码没有分层。随着需求变化、功能逐步拓展、业务逻辑逐渐复杂;代码越来越长、if else嵌套越来越多,代码会变成程序员都厌…

vxe-table 使用表格多选数据、复选框多选

在 vxe-table 启用列多选功能,通过参数 column.type = checkbox 设置类型为多选类型就可以了。 官网:https://vxetable.cn<template><div><vxe-grid v-bind="gridOptions"></vxe-grid></div> </template><script> expor…

【QT】使用Qxlsx读取Excel单元格中函数表达式的结果值

【QT】使用Qxlsx读取Excel单元格中函数表达式的结果值 零、起因 是这样的,目前朋友托我写一款模板生成软件,任务是先把他写的程序文件复制一份出来,然后再根据Excel中对应位置的单元格的值,修改程序文件副本中的某些文件。对于读Excel的需求,经过测试,最终选择Qxlsx这款开…

智慧防汛平台在城市生命线安全建设中的应用

随着城市化进程的加快,城市基础设施的复杂性和互联性不断增强,城市生命线的安全管理面临前所未有的挑战。智慧防汛平台作为城市生命线安全建设的重要组成部分,通过现代信息技术提升城市防汛应急管理的智能化水平,保障城市安全。智慧防汛平台的核心功能智慧防汛平台通常集成…

初探RocketMQ架构

目录一、概述二、概览2.1、部署架构图1.生产者(Producer)2.消费者(Consumer)3.代理服务器(Broker Server)4.名字服务(Name Server)2.2 名词解释1.主题(Topic)2.标签(Tag)3.消息(Message)4.拉取式消费(Pull Consumer)5.推动式消费(Push Consumer)6.生产者组(…

库存系统:应用层、领域层、对接层的架构设计

大家好,我是汤师爷~ 大厂对候选人的要求较高,即使是20k薪资的岗位,也期望应聘者能够独立承担工作职责。 对于30-40k薪资的岗位,需要具备独立系统设计和小型架构设计的能力。 技术专家和架构师岗位(30-50k以上)要求应聘者具有带领团队、负责大型系统架构的经验,并且在架构…

分布式锁的实现原理

介绍分布式锁的实现原理。作者:来自 vivo 互联网服务器团队- Xu Yaoming介绍分布式锁的实现原理。 一、分布式锁概述 分布式锁,顾名思义,就是在分布式环境下使用的锁。众所周知,在并发编程中,我们经常需要借助并发控制工具,如 mutex、synchronized 等,来保障线程安全。但…

HyperWorks变形域和控制柄方法

变形域和控制柄方法 使用变形域和控制柄方法进行网格变形时,网格模型被分割成若干个变形子域,位于变形域上的控制柄常常用来控制变形域形状的变化。当控制柄移动时,变形域的形状随之变化,进而影响变形域内部节点位置的分布。变形过程中,网格以一种合乎逻辑的方式变化,即靠…

记录Vue Antd 表格RowSelection刷新列表后缓存问题

起因原来的代码//tsx部分 <BaseTableoptions={tableData.options}columns={tableData.columns}data={tableData.data}/>const selectKeys = ref<string[]>([])// 表格配置const handleRowSelection = {onChange: (selectedRowKeys: string[], selectedRows: IS…

震惊!推荐一款AI驱动的自动化测试神器:TestCraft

在当今快速迭代的软件开发环境中,自动化测试已经成为确保软件质量的重要一环。然而,传统的手动录制和编写测试脚本的方式不仅耗时耗力,还难以跟上敏捷开发的节奏。 本文将为大家介绍一款基于AI技术的自动化测试工具——TestCraft,它凭借其智能化、易用性和高效性,正逐渐成…

信息安全概论复习-2

计算机系统的可靠性和可用性 系统可靠性定义及测量方法硬件的可靠性和完美性软件的可靠性和完美性容错技术和系统,冗余技术冗余类型,4种,硬件软件时间信息容错系统的工作方式 1、自动检查 2、自动切换 3、自动修复 容错系统和部件--系统级容错、部件级容错--就是备用系统、部…

初探RocketMQ消息消费原理(一)

目录一. 消息消费概述二、消费队列负载机制与重平衡1.1 消费队列负载机制与重平衡1.2 并发消费模型1.3 消息消费进度反馈机制 一. 消息消费概述 消息消费以组的模式开展,一个消费组可以包含多个消费者,每个消费组可以订阅多个主题(一般来说不建议),消费组之间有集群模式和…