POJ 3169 差分约束
题意:
有一群老牛,给你m1组关系a ,b ,c,说明a,b之间的距离大于小于等于c,m2组关系a ,b ,c说明a ,b之间的距离大于等于c,问你是否有可行解,如果没有输出-1 ,如果有输出1,n的最大距离,如果最大距离是INF输出-2;
思路:
显然是查分约束,这个题目的隐含条件就是任意两点的距离都大于等于0,把这个条件加进去,然后就是一遍最短路,一定要记住在查分约束系统中,最小的可行解就跑最长路,最大的可行解救跑最短路。
#include<stdio.h>
#include<string.h>
#include<queue>#define N_node 1000 + 10
#define N_edge 20000 + 200
#define INF 100000000using namespace std;typedef struct
{int to ,next ,cost;
}STAR;STAR E[N_edge];
int list[N_node] ,tot;
int s_x[N_node];void add(int a ,int b ,int c)
{E[++tot].to = b;E[tot].cost = c;E[tot].next = list[a];list[a] = tot;
}bool spfa(int s ,int n)
{for(int i = 0 ;i <= n ;i ++)s_x[i] = INF;int mark[N_node] = {0};int in[N_node] = {0};s_x[s] = 0;mark[s] = in[s] = 1;queue<int>q;q.push(s);while(!q.empty()){int xin ,tou;tou = q.front();q.pop();mark[tou] = 0;for(int k = list[tou] ;k ;k = E[k].next){xin = E[k].to;if(s_x[xin] > s_x[tou] + E[k].cost){s_x[xin] = s_x[tou] + E[k].cost;if(!mark[xin]) {if(++in[xin] > n) return 0;mark[xin] = 1;q.push(xin);}}}} return 1;
} int main ()
{int n ,m1 ,m2;int i ,a ,b ,c;while(~scanf("%d %d %d" ,&n ,&m1 ,&m2)){memset(list ,0 ,sizeof(list)) ,tot = 1;for(i = 1 ;i <= m1 ;i ++){scanf("%d %d %d" ,&a ,&b ,&c);add(a,b ,c);}for(i = 1 ;i <= m2 ;i ++){scanf("%d %d %d" ,&a ,&b ,&c);add(b ,a ,-c);}for(i = 1 ;i < n ;i ++)add(i + 1 ,i ,0);if(!spfa(1 ,n)) printf("-1\n");else if(s_x[n] == INF) printf("-2\n");else printf("%d\n" ,s_x[n]);}return 0;
}
POJ 3169 差分约束相关推荐
- POJ 3159[差分约束]
题目链接:[http://poj.org/problem?id=3159] 题意:有N个小朋友,编号为1-N,每个小朋友将分的一些糖果,给出一些关系A.B.C .表示B最多比A多C个,然后问你盆友1和 ...
- POJ 1201 差分约束(集合最小元素个数)
题意: 给你一个集合,然后有如下输入,a ,b ,c表示在范围[a,b]里面有至少有c个元素,最后问你整个集合最少多少个元素. 思路: 和HDU1384一模一样,首先这个题目可 ...
- poj 1716 差分约束
水水的. 给几个不等式:dis[b]-dis[a]>=2; 0<=dis[i+1]-dis[i]<=1; #include<iostream> #include< ...
- poj 1201 差分约束
转自:優YoU http://user.qzone.qq.com/289065406/blog/1307063918 大致题意: 给出数轴上的n个区间[ai,bi],每个区间都是连续的int区间. ...
- O - Layout POJ - 3169(差分约束)
O - Layout POJ - 3169 参考 思路: 限制条件 : 最大距离不超过w d[v] - d[u] <= w; 最小距离超过w d[v] - d[u] >= w; 移项得 d ...
- POJ - 3169 SPFA解差分约束除了有解,负环还有另一种情况
题意就是有N头牛排成一个直线..有些牛之间互相讨厌..距离必须大于等于某个...有些牛之间相互暧昧..距离必须小于等于某个...牛的前后顺序和编号是一样的...问这些牛最多能排多长.. 比较传统的SP ...
- POJ 3159 Candies(差分约束+SPAF)
题意: 给n个小朋友分发糖果,但小朋友们之间有嫉妒心.接下来m行,每行三个数,分别表示小朋友A希望B得到的糖果不能比他多x个.要求你计算在满足所有小朋友的条件的情况下最多需要准备多少颗糖. 题目: D ...
- [poj 1364]King[差分约束详解(续篇)][超级源点][SPFA][Bellman-Ford]
题意 有n个数的序列, 下标为[1.. N ], 限制条件为: 下标从 si 到 si+ni 的项求和 < 或 > ki. 一共有m个限制条件. 问是否存在满足条件的序列. 思路 转化为差 ...
- 【POJ - 1275】Cashier Employment(差分约束,建图)
题干: A supermarket in Tehran is open 24 hours a day every day and needs a number of cashiers to fit i ...
最新文章
- ARM学习方法大杂烩,高手经验之谈,内容完全来自互联网
- AI CC2018软件安装教程
- (转)Python开发规范
- 分享Spring Cloud分布式微服务架构图
- Bootstrap初步
- 台式电脑开机显示节电模式怎么办_台式电脑的开机密码忘记了怎么办?
- Software--IoC 依赖倒置 控制反转
- [转载]仿射变换(Affine Transformation)
- 富士施乐Fuji Xerox DocuPrint M225 dw 驱动
- C语言:实数类型。2021-02-15
- 学好数据结构的重要性
- 第二篇:Spring Cloud Eureka 服务注册+发现
- Git版本管理工具使用知识汇总
- 共享单车信息系统服务器部署,共享单车云服务器搭建
- .NET Core(C#)使用Titanium.Web.Proxy实现Http(s)代理监控请求的方法及示例代码
- 验证银行卡号是否合法
- 拓嘉启远电商:拼多多缺货会降权吗?如何处理
- 在SDLC中使用静态代码分析的最佳实践
- 继续当搬运工之人人网移动端架构解析
- SpringCloud Netflix-Eureka使用
热门文章
- 不要让中国孩子买的玩具都变成外国货!
- “MIDI机器狗”的木马正在疯狂传播
- java连接腾讯云上的redis
- 学习笔记84—[深度学习]神经网络反向传播(BackPropagation)
- 前端小白第一次使用redux存取数据练习
- js作用域链以及全局变量和局部变量
- 修复使用codeXmlDocument/code加载含有DOCTYPE的Xml时,加载后增加“[]”字符的错误...
- 编写高质量代码改善C#程序的157个建议——建议87:区分WPF和WinForm的线程模型...
- Delphi在创建和使用DLL的时候如果使用到string,请引入ShareMem单元
- for语句之打印三角形问题