一文搞懂:【bzoj】3436小K的农场

简介: 一文搞懂:【bzoj】3436小K的农场

【题目描述】


小K在MC里面建立很多很多的农场,总共n个,以至于他自己都忘记了每个农场中种植作物的具体数量//代码效果参考:http://www.lyjsj.net.cn/wz/art_24259.html

了,他只记得一些含糊的信息(共m个),以下列三种形式描述:农场a比农场b至少多种植了c个单位的作物,农场a比农场b至多多种植了c个单位的作物,农场a与农场b种植的作物数一样多。但是,由于小K的记忆有些偏差,所以他想要知道存不存在一种情况,使得农场的种植作物数量与他记忆中的所有信息吻合。

【输入格式】 farm.in


第一行包括两个整数n和m,分别表示农场数目和小K记忆中的信息数目。


接下来m行:


如果每行的第一个数是1,接下来有3个整数a,b,c,表示农场a比农场b至少多种植了c个单位的作物。


如果每行的第一个数是2,接下来有3个整数a,b,c,表示农场a比农场b至多多种植了c个单位的作物。


如果每行第一个数是3,家下来有2个整数a,b,表示农场a终止的数量和b一样多。


【输出格式】 farm.out


如果存在某种情况与小K的记忆吻合,输出“Yes”,否则输出“No”。


【样例输入】


3 3


3 1 2


1 1 3 1


2 2 3 2


【样例输出】


Yes


样例解释:三个农场种植数量可以为(2,2,1)。


对于100%的数据 1<=n,m,a,b,c<=10000.


裸的spfa_dfs判负环


1 #include


2 #include


3 using namespace std;


4


5 struct Edge


6 {


7 int to,w,next;


8 }E【10000001】;


9 int node=0,head【10001】,dist【10001】;


10 bool vis【10001】;


11


12 int n,m;


13 bool flag;


14


15 void insert(int u,int v,int w)


16 {


17 E【++node】=(Edge){v,w,head【u】};


18 head【u】=node;


19 }


20


21 void spfa_dfs(int s)


22 {


23 vis【s】=1;


24 for(int i=head【s】;i;i=E【i】.next)


25 {


26 int to=E【i】.to,w=E【i】.w;


27 if(dist【s】+w[span style="color: rgba(0, 0, 0, 1)">dist【to】)


28 {


29 if(vis【to】){flag=1;return;}


30 else


31 {


32 dist【to】=dist【s】+w;


33 spfa_dfs(to);


34 }


35 }


36 }


37 vis【s】=0;


38 }


39


40 bool check()


41 {


42 flag=0;


43 memset(dist,0x7f,sizeof(dist));


44 memset(vis,0,sizeof(vis));


45 for(int i=1;i<=n;i++)


46 {


47 dist【i】=0;


48 spfa_dfs(i);


49 if(flag) return 1;


50 }


51 return 0;


52 }


53


54 int read()


55 {


56 int x=0,f=1;char ch=getchar();


57 while(ch[span style="color: rgba(128, 0, 0, 1)">'0'||ch>'9'){if(ch=='-')f=-f;ch=getchar();}


58 while(ch>='0'&&ch<='9'){x=x10+ch-'0';ch=getchar();}


59 return xf;


60 }


61


62 int main()


63 {


64 n=read();m=read();


6//代码效果参考:http://www.lyjsj.net.cn/wz/art_24257.html

5 for(int i=1;i<=m;i++)

66 {


67 int f,a,b,c;


68 f=read();


69 switch(f)


70 {


71 case 1:


72 a=read();b=read();c=read();


73 insert(a,b,-c);


74 break;


75 case 2:


76 a=read();b=read();c=read();


77 insert(b,a,c);


78 break;


79 case 3:


80 a=read();b=read();


//代码效果参考:http://www.lyjsj.net.cn/wx/art_24255.html

81 insert(a,b,0);

82 insert(b,a,0);


83 break;


84 }


85 }


86 if(check()) printf("No");


87 else printf("Yes");


88 return 0;


89 }

相关文章
|
弹性计算 负载均衡 数据库
阿里云服务器带宽上传下载速度、出入网收费免费说明
用户花钱购买的阿里云服务器公网带宽是指公网出方向带宽,阿里云内网带宽和公网入方向带宽都是免费的。用户购买公网出方向带宽后,阿里云会提供免费的公网入方向带宽,公网入方向带宽10M起步
5611 0
阿里云服务器带宽上传下载速度、出入网收费免费说明
|
数据安全/隐私保护
【图文教程】de4dot实战字符串解密(演示:hishop微分销系统)
原文:【图文教程】de4dot实战字符串解密(演示:hishop微分销系统) 前些日子,公司需求开发一个微分销系统,于是找来hishop微分销系统想借鉴一下,没想到里面各种加密,就连字符串也都加密了。
2455 0
|
8月前
|
人工智能 运维 自然语言处理
2025保姆级JupyterLab 4.0安装指南|全平台部署+AI编程环境配置
JupyterLab 是下一代交互式计算开发环境,2025年发布的4.0版本新增多语言内核支持(Python/R/Julia/JavaScript一键切换)、实时协作功能、AI辅助编程(集成GPT-5代码补全与错误诊断)和可视化调试器等特性。本文详细介绍其技术定位、跨平台安装方案、安装流程、高阶功能配置、典型应用场景及故障排查指南,帮助用户高效使用JupyterLab进行开发。
|
域名解析 缓存 运维
【域名解析DNS专栏】域名解析故障排查手册:常见问题与解决方案
【5月更文挑战第22天】【DNS故障排查手册】解决域名无法解析、速度慢、污染劫持及配置错误问题。检查网络、清理缓存、更换DNS服务器、使用HTTPS、DNSSEC及CDN。示例:使用nslookup查询域名解析。定期检查优化DNS服务器,确保稳定安全。
3144 4
【域名解析DNS专栏】域名解析故障排查手册:常见问题与解决方案
|
11月前
|
人工智能 编解码 机器人
OpenAI又出王炸了!正式推出超强AI视频模型Sora
OpenAI正式推出AI视频生成模型Sora,可根据文本提示生成逼真视频,面向美国及其他市场ChatGPT付费用户开放。Sora Turbo支持生成长达20秒的视频及多种变体,具备模拟物理世界的新兴能力,可创建多镜头视频,提供Remix和Storyboard等创新功能。
171 4
OpenAI又出王炸了!正式推出超强AI视频模型Sora
|
IDE 开发工具 C++
快速开始c,配置Clion
快速开始c,配置Clion
378 0
|
12月前
|
机器学习/深度学习 传感器 人工智能
数字孪生技术:智能建筑的新纪元
【10月更文挑战第31天】数字孪生技术正重新定义智能建筑的设计、建造和管理。通过在虚拟环境中创建与实际建筑一致的数字模型,实现实时监测、模拟和优化。本文探讨其在设计、施工、运营、应急管理和未来展望中的应用,展示其在建筑智能化管理中的巨大潜力。
|
12月前
|
机器学习/深度学习 数据采集 TensorFlow
使用Python实现智能食品广告投放优化的深度学习模型
使用Python实现智能食品广告投放优化的深度学习模型
325 0
|
网络协议 Java 测试技术
|
固态存储 虚拟化