BZOJ 3436 小K的农场 差分约束
Description
Input
Output
如果存在某种情况与小K的记忆吻合,输出”Yes”,否则输出”No”
Sample Input
3 1 2
1 1 3 1
2 2 3 2
Sample Output
1 /************************************************************** 2 Problem: 3436 3 User: TreeDream 4 Language: C++ 5 Result: Accepted 6 Time:140 ms 7 Memory:2220 kb 8 ****************************************************************/ 9 10 #include <bits/stdc++.h> 11 12 using namespace std; 13 14 const int maxn = 10010; 15 16 struct Edge 17 { 18 int from,to,dist; 19 }; 20 21 inline int getint() 22 { 23 int w=0,q=0; char c=getchar(); 24 while((c<'0' || c>'9') && c!='-') c=getchar(); if(c=='-') q=1,c=getchar(); 25 while (c>='0' && c<='9') w=w*10+c-'0', c=getchar(); return q ? -w : w; 26 } 27 28 struct BellmanFord 29 { 30 int n,m; 31 vector<Edge> edges; 32 vector<int> G[maxn]; 33 bool inq[maxn]; 34 int d[maxn]; 35 int p[maxn]; 36 int cnt[maxn]; 37 38 void init(int n) 39 { 40 this->n = n; 41 for(int i=0; i<n; i++) G[i].clear(); 42 edges.clear(); 43 } 44 45 void AddEdge(int from,int to,int dist) 46 { 47 edges.push_back((Edge) 48 { 49 from,to,dist 50 }); 51 m = edges.size(); 52 G[from].push_back(m-1); 53 } 54 55 bool negativeCycle() 56 { 57 queue<int> Q; 58 memset(inq,0,sizeof(inq)); 59 memset(cnt,0,sizeof(cnt)); 60 for(int i=0; i<n; i++) 61 { 62 d[i] = 0; 63 inq[0] = true; 64 Q.push(i); 65 } 66 67 while(!Q.empty()) 68 { 69 int u = Q.front(); 70 Q.pop(); 71 inq[u] = false; 72 for(int i=0; i<G[u].size(); i++) 73 { 74 Edge& e = edges[G[u][i]]; 75 if(d[e.to]>d[u]+e.dist) 76 { 77 d[e.to] = d[u] + e.dist; 78 p[e.to] = G[u][i]; 79 if(!inq[e.to]) { 80 Q.push(e.to); 81 inq[e.to] = true; 82 if(++cnt[e.to]>n) 83 return true; 84 } 85 } 86 } 87 } 88 return false; 89 } 90 91 }; 92 93 BellmanFord sol; 94 95 int main() 96 { 97 int n,m; 98 n = getint(); 99 m = getint(); 100 101 sol.init(n+1); 102 int a,b,c; 103 int flag; 104 while(m--) 105 { 106 flag = getint(); 107 //scanf("%d",&flag); 108 if(flag==2) 109 { 110 a = getint(); 111 b = getint(); 112 c = getint(); 113 //scanf("%d%d%d",&a,&b,&c); 114 sol.AddEdge(b,a,c); 115 } 116 else if(flag==1) 117 { 118 a = getint(); 119 b = getint(); 120 c = getint(); 121 //scanf("%d%d%d",&a,&b,&c); 122 sol.AddEdge(a,b,-c); 123 } 124 else if(flag==3) 125 { 126 a = getint(); 127 b = getint(); 128 //scanf("%d%d",&a,&b); 129 sol.AddEdge(a,b,0); 130 //sol.AddEdge(b,a,0); 131 } 132 } 133 for(int i=0; i<n; i++) 134 sol.AddEdge(0,i,0); 135 136 if(sol.negativeCycle()) 137 { 138 puts("No"); 139 } 140 else puts("Yes"); 141 142 return 0; 143 }
View Code
转载于:https://www.cnblogs.com/TreeDream/p/6576816.html
BZOJ 3436 小K的农场 差分约束相关推荐
- BZOJ 3436: 小K的农场( 差分约束 )
orz云神... 真的给跪了...BFS版spfa T 掉了...然后DFS版的就A了...我现在很迷茫.... 这就是个普通的差分约束... ---------------------------- ...
- bzoj 3436: 小K的农场(差分约束)
3436: 小K的农场 Time Limit: 10 Sec Memory Limit: 128 MB Submit: 1824 Solved: 810 [Submit][Status][Disc ...
- [BZOJ]3436: 小K的农场
题解: 差分约束 模板题 差分约束系统 联系 最短路 对于操作1:$ a-b\geqslant c\rightarrow b\leqslant a-c $ 也就是说a向b连一条-c的边 对于操作2 ...
- P1993 小K的农场 (差分约束)
题目描述 小K在MC里面建立很多很多的农场,总共n个,以至于他自己都忘记了每个农场中种植作物的具体数量了,他只记得一些含糊的信息(共m个),以下列三种形式描述: 农场a比农场b至少多种植了c个单位的作 ...
- bzoj3436小K的农场
bzoj3436小K的农场 题意: n个数,知道m条关系:a-b≥c.a-b≤c或a==b.问是否存在满足所有关系的情况.n≤10000,m≤10000. 题解: 差分约束.因为只要求是否满足,因此最 ...
- bzoj 3437 小p的农场
bzoj 3437 小p的农场 思路 \(f[i]=min(f[j]+\sum\limits_{k=j+1}^{i}{b[k]*(i-k)}+a[i])\) \(f[i]=min(f[j]+\sum\ ...
- P1993 小 K 的农场
P1993 小 K 的农场 题解: 农场 a 比农场 b 至少多种植了 c 个单位的作物: 这句话说明:a - b > = c 转化可得 b - a < = - c add(a,b,-c) ...
- 【BZOJ - 3436】小K的农场(差分约束)
题干: 背景 小K是个特么喜欢玩MC的孩纸... 描述 小K在MC里面建立很多很多的农场,总共n个,以至于他自己都忘记了每个农场中种植作物的具体数量了,他只记得 一些含糊的信息(共m个),以下列三种形 ...
- 【差分约束】POJ3159/LG P1993 小K的农场
终于把差分约束刷完了!!,这些题的套路都是很类似的 题目描述小K在MC里面建立很多很多的农场,总共n个,以至于他自己都忘记了每个农场中种植作物的具体数量了,他只记得一些含糊的信息(共m个),以下列三种 ...
最新文章
- 理解NSAttributedString
- tableau的2020.3在mac上可以使用,2020.4不行:亲测有效
- org.junit.runners.model.InvalidTestClassError: Invalid test class ‘‘: 1. No runnable methods
- python时间计算_python计算两日期之间工作日时长
- opencv10-形态学操作
- python守护线程
- JSF学习笔记--JSF简介,JSF第一个应用程序
- 对话Pauly Comtois:赫斯特商业媒体中的企业DevOps采用
- 二十六. Python基础(26)--类的内置特殊属性和方法
- bigdecimal 科学计数转普通计数_LoaRunner性能测试教程:Windows计数器(2)
- day_log 12月份的
- 【新手速成】菜鸟如何在三天内完成系统开发
- GB28181协议常见几种信令流程(三)
- 『伪原创工具 』英文在线伪原创工具
- OKR案例: 回顾/复盘会流程模板
- GSMA在G20峰会召开之前就妇女数字融合提出综合性议程
- 服务器系统访问量统计,通过网站统计或系统监视器查看IIS并发连接数
- centos7的scp命令_Linux命令-CentOS7安装scp命令,进行mac与Linux之间的文件上传下载...
- 穿普拉达的女王 观后感
- 计算机功能清单,如何使用印象笔记的清单功能?清单快速上手教程