一文搞懂:【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 }

相关文章
AcWing第 96 场周赛
AcWing第 96 场周赛
193 0
|
算法 Java
acwing 第63场周赛【2022.08.06】
acwing 第63场周赛【2022.08.06】
84 0
acwing 第63场周赛【2022.08.06】
|
存储 人工智能 算法
【蓝桥杯集训·最后一次周赛】AcWing 第 97 场周赛
文章目录 第一题 AcWing 4944. 热身计算 一、题目 1、原题链接 2、题目描述 二、解题报告 1、思路分析 2、时间复杂度 3、代码详解 第二题 AcWing 4945. 比大小 一、题目 1、原题链接 2、题目描述 二、解题报告 1、思路分析 2、时间复杂度 3、代码详解 第三题 AcWing 4946. 叶子节点 一、题目 1、原题链接 2、题目描述 二、解题报告 1、思路分析 2、时间复杂度 3、代码详解
134 0
|
JavaScript BI
【蓝桥杯集训·周赛】AcWing 第96场周赛
文章目录 第一题 AcWing 4876. 完美数 一、题目 1、原题链接 2、题目描述 二、解题报告 1、思路分析 2、时间复杂度 3、代码详解 第二题 AcWing 4877. 最大价值 一、题目 1、原题链接 2、题目描述 二、解题报告 1、思路分析 2、时间复杂度 3、代码详解 第三题 AcWing 4878. 维护数组 一、题目 1、原题链接 2、题目描述 二、解题报告 1、思路分析 2、时间复杂度 3、代码详解
92 0
|
存储 机器学习/深度学习 人工智能
【蓝桥杯集训·周赛】AcWing 第 95 场周赛
文章目录 第一题 AcWing 4873. 简单计算 一、题目 1、原题链接 2、题目描述 二、解题报告 1、思路分析 2、时间复杂度 3、代码详解 第二题 AcWing 4874. 约数 一、题目 1、原题链接 2、题目描述 二、解题报告 1、思路分析 2、时间复杂度 3、代码详解 第三题 AcWing 4875. 整数游戏 一、题目 1、原题链接 2、题目描述 二、解题报告 1、思路分析 2、时间复杂度 3、代码详解
116 0
|
存储 机器学习/深度学习 人工智能
【蓝桥杯集训·周赛】AcWing 第94场周赛
文章目录 第一题 AcWing 4870. 装物品 一、题目 1、原题链接 2、题目描述 二、解题报告 1、思路分析 2、时间复杂度 3、代码详解 第二题 AcWing 4871. 最早时刻 一、题目 1、原题链接 2、题目描述 二、解题报告 1、思路分析 2、时间复杂度 3、代码详解 第三题 AcWing 4872. 最短路之和 一、题目 1、原题链接 2、题目描述 二、解题报告 1、思路分析 2、时间复杂度 3、代码详解
79 0
|
存储
【蓝桥杯集训·周赛】AcWing 第92场周赛
文章目录 第一题 AcWing 4864. 多边形 一、题目 1、原题链接 2、题目描述 二、解题报告 1、思路分析 2、时间复杂度 3、代码详解 第二题 AcWing 4865. 有效类型 一、题目 1、原题链接 2、题目描述 二、解题报告 1、思路分析 2、时间复杂度 3、代码详解 第三题 AcWing 4866. 最大数量 一、题目 1、原题链接 2、题目描述 二、解题报告 1、思路分析 2、时间复杂度 3、代码详解
127 0
|
存储 人工智能
【蓝桥杯集训·周赛】AcWing 第93场周赛
文章目录 第一题 AcWing 4867. 整除数 一、题目 1、原题链接 2、题目描述 二、解题报告 1、思路分析 2、时间复杂度 3、代码详解 第二题 AcWing 4868. 数字替换 一、题目 1、原题链接 2、题目描述 二、解题报告 1、思路分析 2、时间复杂度 3、代码详解 第三题 AcWing 4869. 异或值 一、题目 1、原题链接 2、题目描述 二、解题报告 1、思路分析 2、时间复杂度 3、代码详解
106 0
|
存储 人工智能 BI
【蓝桥杯集训·周赛】AcWing 第91场周赛
文章目录 第一题 AcWing 4861. 构造数列 一、题目 1、原题链接 2、题目描述 二、解题报告 1、思路分析 2、时间复杂度 3、代码详解 第二题 AcWing 4862. 浇花 一、题目 1、原题链接 2、题目描述 二、解题报告 1、思路分析 2、时间复杂度 3、代码详解 第三题 AcWing 4861. 构造数列 一、题目 1、原题链接 2、题目描述 二、解题报告 1、思路分析 2、时间复杂度 3、代码详解
87 0
|
存储
【蓝桥杯集训·每日一题】AcWing 3777. 砖块
文章目录 一、题目 1、原题链接 2、题目描述 二、解题报告 1、思路分析 2、时间复杂度 3、代码详解 三、知识风暴 递推
113 0

热门文章

最新文章