AtCoder Regular Contest 088 D - People on a Line(DFS+图论)

华为OD机试双机位A卷 - 小明减肥 (C++ & Python & JAVA & JS & GO) 华为OD机试2025双机位A卷 小明减肥,提供Java、C++、Python、Go、JavaScript源码实现,并提供完整思路讲解 阅读详情

AtCoder Regular Contest 088 D - People on a Line(DFS+图论)


Problem Statement

There are N people standing on the x-axis. Let the coordinate of Person i be xi. For every i, xi is an integer between 0 and 109 (inclusive). It is possible that more than one person is standing at the same coordinate.

You will given M pieces of information regarding the positions of these people. The i-th piece of information has the form (Li,Ri,Di). This means that Person Ri is to the right of Person Li by Di units of distance, that is, xRi−xLi=Di holds.

It turns out that some of these M pieces of information may be incorrect. Determine if there exists a set of values (x1,x2,…,xN) that is consistent with the given pieces of information.

Constraints
  • 1≤N≤100 000
  • 0≤M≤200 000
  • 1≤Li,Ri≤N (1≤i≤M)
  • 0≤Di≤10 000 (1≤i≤M)
  • Li≠Ri (1≤i≤M)
  • If i≠j, then (Li,Ri)≠(Lj,Rj) and (Li,Ri)≠(Rj,Lj).
  • Di are integers.
Input

Input is given from Standard Input in the following format:

N M
L1 R1 D1
L2 R2 D2
:
LM RM DM
Output

If there exists a set of values (x1,x2,…,xN) that is consistent with all given pieces of information, print Yes; if it does not exist, print No.

Sample Input 1
3 3
1 2 1
2 3 1
1 3 2
Sample Output 1
Yes

Some possible sets of values (x1,x2,x3) are (0,1,2) and (101,102,103).

Sample Input 2
3 3
1 2 1
2 3 1
1 3 5
Sample Output 2
No

If the first two pieces of information are correct, x3−x1=2 holds, which is contradictory to the last piece of information.

Sample Input 3
4 3
2 1 1
2 3 5
3 4 2
Sample Output 3
Yes
Sample Input 4
10 3
8 7 100
7 9 100
9 8 100
Sample Output 4
No
Sample Input 5
100 0
Sample Output 5
Yes
用邻接表储存图,然后遍历,记录每个点之间距离,如果再次到达访问的点,发现距离和之前储存的不同则返回false

最后返回true;

code:

#include <iostream>
#include <cstdio>
#include <cstring>
#include <vector>
using namespace std;
const int N = 1e5+10;
int n,m;
int dis[N];
bool vis[N];
vector<pair<int,int> >E[N];
bool dfs(int u){
    vis[u] = 1;
    vector<pair<int,int> >::iterator it;
    for(it = E[u].begin(); it != E[u].end(); it++){
        int v = (*it).first;//注意这里的迭代器要加(*)
        int d = (*it).second;
        if(!vis[v]){
            dis[v] = dis[u] + d;
            if(!dfs(v))
                return false;
        }
        else if(dis[u]+d!=dis[v])
            return false;
    }
    return true;
}
int main(){
    cin >> n >> m;
    int u,v,w;
    int i;
    for(i = 1; i <= m; i++){
        cin >> u >> v >> w;
        E[u].push_back(make_pair(v,w));
        E[v].push_back(make_pair(u,-w));
    }
    for(i = 1; i <= n; i++){
        if(!vis[i]){
            if(!dfs(i)){
                cout << "No" << endl;
                return 0;
            }
        }
    }
    cout << "Yes" << endl;
    return 0;
}



【QGIS】软件下载安装及GIS4WRF插件使用 阅读详情

相关推荐

Simulink玩转PMSM无感FOC:从IF强拖参数调试到切换失败的避坑指南

本文深入探讨了Simulink在PMSM无感FOC控制中的IF强拖启动参数调试与切换避坑技巧。通过详细解析强拖加速、速度维持和闭环切换三大阶段的设计逻辑,以及五个常见陷阱的解决方案,帮助工程师快速定位启动失败和切换震荡问题。文章还提供了典型故障的波形诊断方法和高级调试工具链优化建议,是电机控制领域的实用指南。

weixin_29164843的博客 408

AtCoder - ABC 270 - C(DFS+树上路径查询)

先跑一遍DFS求出每个节点的深度后,对于求结点 a,b 的路径,我们需要维护两个数组vector,数组 v1,v2 分别存从节点 a,b 开始的路径;fa[],要求的节点x到节点 y 的路径,就是从节点 x 一直向父节点遍历输出直到节点 y 即可。给定一棵有 N 个节点的树和两个节点 x,y ,按顺序输出从节点 x 到节点 y 的路径。拼接数组中所存的节点,顺序输出数组 v1 ,再输出两路径相遇处的节点 t ,最后。2. dfs预处理树中节点的深度,预处理以某一节点为根节点的所有节点的父节点。

m0_64172681的博客 821

Mamba-ST实战:用状态空间模型实现艺术风格迁移的5个关键步骤

本文详细介绍了如何使用Mamba-ST状态空间模型实现高效的艺术风格迁移,涵盖环境配置、数据预处理、模型架构、训练策略和推理优化等5个关键步骤。Mamba-ST基于SSM(状态空间模型)构建,在保持生成质量的同时显著降低计算复杂度,为风格迁移领域提供了新的解决方案。

weixin_29163581的博客 354

AtCoder Regular Contest 090 D - People on a Line

Problem Statement There are N people standing on the x-axis. Let the coordinate of Person i be xi. For every i, xi is an integer between 0 and 109 (inclusive). It is possible that more than one perso...

nare123的博客 430

提升仿真效率:Synopsys VCS高级编译选项优化技巧(2023最新版)

本文深入探讨了Synopsys VCS 2023版本中的高级编译选项优化技巧,帮助工程师提升仿真效率。通过并行编译、智能代码分析、精准覆盖率采样等策略,结合真实案例展示如何显著缩短仿真周期并优化资源使用,适用于数字芯片验证和大型SoC设计。

weixin_30338481的博客 113

逆变器母线电容选型与均压电阻设计实战指南

本文为逆变器母线电容选型与均压电阻设计提供了实战指南。文章从工程角度出发,详细解析了母线电容耐压值、容值的计算方法,并重点强调了纹波电流热设计的重要性。同时,深入探讨了串联电容均压电阻的设计原则与功率计算,通过5.5kW变频器案例,系统演示了从参数确定到最终选型的完整流程,旨在帮助工程师设计出稳定可靠的逆变器系统。

weixin_29299807的博客 291

AtCoder - ABC 165 - F(DFS树) | 163 - F(容斥原理 + DFS树)

DFS树的两道题,后一道待再补补。

m0_64172681的博客 533

从零到一:构建嵌入式Arm-Linux的Qt MQTT通信框架全指南

本文详细指导如何在嵌入式Arm-Linux平台上从零构建Qt MQTT通信框架,涵盖交叉编译、环境配置、依赖库管理及性能优化。重点针对32位Arm架构,提供完整的工具链配置、编译步骤和实战部署方案,适用于物联网和工业控制等场景。

w8x9y0z1的博客 1000

AtCoder - ABC 166 - F(DFS / 贪心)

题意:共操作 N 次,每次输入的是字符串。问能否在保证三个数都非负的条件下进行 n 次操作,如果可以输出Yes以及每次操作进行加1的那个字母;如果不能输出No。

m0_64172681的博客 432

台积电技术研发实力

台积电技术研发实力 台积电在半导体行业的地位毋庸置疑。他们究竟有多强大,大部分读者了解得可能非常片面。从最新公布的2019年财报里,看看台积电的真正实力。 一、台积电在市场上的地位 根据公司财报,台积公司在先进制程技术、特殊制程技术,以及先进封装技术的发展上持续领先全球集成电路制造服务领域,2019年的市场占有率为52%。台积公司总体营收以地区划分(主要依据客户营运总部所在地),来自北美市场的营收占台积公司总体营收的60%、日本与中国大陆以外的亚太市场占9%、中国大陆市场占20%、欧洲、中东及非洲市场占6

吴建明wujianming_110117 1900

手把手教你用若依WMS搭建企业级仓库管理系统(Vue+Spring Boot实战)

本文提供了一份基于若依框架(RuoYi)快速搭建企业级仓库管理系统(WMS)的实战指南。详细介绍了从环境准备、项目初始化到核心功能模块(如入库流程、库存管理看板)深度定制的全过程,并涵盖Lodop打印集成、移动端PWA适配及生产环境Docker部署等高级主题,帮助开发者高效构建稳定可用的WMS系统。

weixin_29015899的博客 562

0基础刷图论最短路 2(从ATcoder 0分到1800分)

ATC最短路2 (本文难度rated 1000~ 1200)题目来源:Atcoder题目收集:(里面按tag分类好了Atcoder的所有题目,类似cf)(访问需要魔法)

louisdlee的博客 706

支付域——账户系统设计

本文详细介绍了支付域中的账户系统设计,包括账户的定义、核心特征、常见类型以及在支付系统中的作用。账户是支付平台为用户、商户等主体建立的资金记录单元,具有资金归属、余额管理、交易流水、资金安全等核心特征。常见账户类型包括用户账户、商户账户、平台账户、保证金账户等。此外,还探讨了账户与银行账户的区别、账户的结构设计、如何设计账户类型以及账户系统设计等内容。

庄小焱 1189

【ATcoder】【DFS | 哈希 +并查集 | BFS 】Alternating Path

题目链接: 题意: 这个题目的意思是:给定一个h*w的方格内,只有' . ' 和 ' # ' 两个符号, 请问有多少条路径是  ' . '   ------&gt;  ' # '  ,其中路径中必须是 ' . ' 和 ’ # ‘ 相间。 小结: 这个题真的不会做,我当时就懵逼了,啥都不知道,然后看了网友的做法,发现原来就是找联通块,只要找到联通块就行了,这个答案就是: ans=每个联通...

Z_sea的博客 492

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

AtCoder - ABC 326 - D - ABC Puzzle (DFS)

看了很多题解都是写了一大坨,看起来非常的混乱,然而自己去写的时候又不可避免的写了一坨,只能尽可能的去优化代码可读性。

2302_79440616的博客 1839

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

0基础刷图论最短路 3(从ATcoder 0分到1800分)

AT最短路刷题3(本文难度rated 1200~ 1400)题目来源:Atcoder题目收集:(里面按tag分类好了Atcoder的所有题目,类似cf)(访问需要魔法)这算是一个题单,各位有兴趣可以按照这个顺序来刷。我的代码仅供参考。会提示关键性质和步骤。部分有注释。洛谷、知乎、可以搜到题解。

louisdlee的博客 1057

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

【AtCoder】E - Magical Ornament 图论 状压dp

题意:告诉你有哪些两两可以相邻,问你能不能排列出一个包含一串数的序列,且序列长度最小。 思路:不知道是不是想复杂了。写完感觉不是这个位置的题该有的难度(应该是我太菜了)。 1.首先,建图,相邻的对就连边,把题意转化成在该图上跑出一个最短路径包含序列中的所有点(点可重复)。 2.因为走的点的先后顺序未知,所以我们只能通过bfs得到单次从s开始到各点的最短路径,下一步要考虑顺序问题。 3.用dp[i][j]dp[i][j]dp[i][j]表示,走完i所表示的集合中的点,且最后一步是走到第j个点时的最优解。其中i

待到山花烂漫时 623

AtCoder Beginner Contest 231 E 贪心 DFS 记忆化搜索

题目 有N种货币,每种对应ai元,a1一定等于1,且ai-1一定是ai的倍数。 求出完成一笔X元的交易所需的最小货币数。 即支付钱加找钱所需的货币数加起来最小。 题解思路 贪心策略 用这个付完,即不找零。 要么用这个多付钱(前提是本来有多,否则就是白费的搜索)然后求最小的找零数。 在这两种情况中取min 因为a是从1开始的,所以必然能取到数。 这题复杂度一言难尽,居然能这么暴力。 AC代码 #include <bits/stdc++.h> //#include <unordered_map

从你的全世界路过 525

atcoder Low Range-Sum Matrix dfs

问题 F: Low Range-Sum Matrix 时间限制:1 Sec内存限制:128 MB 提交:83解决:9 [提交] [状态] [命题人:admin] 题目描述 You received a card at a banquet. On the card, a matrix of N rows and M columns and two integers K and ...

喵喵喵 380

【AtCoder - abc311_d】Grid Ice Floor【DFS】

显然搜索题,但是范围是两百,不能每个点都递归,参照之前的题,会出现一些能递归的关键点。我们先对于每个点上下左右走到头,求出每个点对应的下一个关键点,然后从起点开始递归,对于每个点记录有没有“走过”,和有没有递归过,然后到达每个点都去找关键点就行。

ssllyr 393

AtCoder Beginner Contest 165 C.Many Requirements

AtCoder Beginner Contest 165 C.Many Requirements 题目链接 很多人看到题目就懵了,我个人感觉这题位置不好,比D要难一点????,我说的难是指难想一点~ 一开始大家肯定比较懵,看来半天读懂了题目意思,但是却想不到最优解法,我们不妨观察一下 N,MN,MN,M 的范围,立马想到了暴力,没错,我们就暴力列举所有 A 可能的排列情况即可,用到了 DFSDFSDF...

旺崽的博客 2709

AtCoder abc320 D,题解居然敢用 DFS?

使用 DFS,在本地电脑上运行,直接堆栈溢出。就容易爆栈,它居然敢用。

qq_36224021的博客 286

0基础刷图论最短路 1(从ATcoder 0分到1800分)

ATC最短路1 (本文难度rated 0~ 1000) 题目来源:Atcoder 题目收集: https://atcoder-tags.herokuapp.com/tags/Graph/Shortest-Path (里面按tag分类好了Atcoder的所有题目,类似cf) (访问需要魔法) 文章目录ATC最短路1 (本文难度rated 0~ 1000)1-**Hands**2- **Cat Snuke and a Voyage**3-**Collision** https://atcoder.jp/cont

louisdlee的博客 1474

AtCoder 3596 C - Bridge_DFS

AtCoder 3596 C - Bridge Problem Statement 连通的定义是:图中的任意两个点之间能互相到达。 给你一个包含n个点,m条边的无向图.如果去掉某条边之后,该图不连通了.那么这条边称为“special edge”.输出"special edge"的个数.Input第一行两个整数n,m(n<=50,m<=min(n*(n-1))/2,50).接下来m行...

weixin_30414635的博客 472

AtCoder abc_264 C - Matrix Reducing(嵌套 dfs)

嵌套 dfs

Jacob0824的博客 1074

atcoder 167 C(dfs)

题目传送门 文章目录思路:废话: 思路: 这道题范围比较小,直接暴力搜索就行(可是本蒟弱,比赛时没做出来。。。) 对于每一本书要么买,要么不买,递归遍历n本书 开始没理解到这个dfs怎么设计。。。 参考:大佬文章 #include <iostream> #include<algorithm> using namespace std; const int maxn = 20; int a[maxn][maxn]; int ans = 1e9; int n,m,x; int Get[m

qq_45769627的博客 399
上一篇: Traveling
下一篇: Atcoder Regular Contest 089D Checker
Guuuuuu老师儿
博客等级 码龄9年 259粉丝 718原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值