POJ 3159 Candies 差分约束系统
2016-05-18 11:27
281 查看
题目:http://poj.org/problem?id=3159
题意:给n个小朋友发糖果,有如下一些关系:a b c,代表第b个人得到的糖果不多于第a个人c个,即b - a <= c。最后在满足所有关系的情况下,求第n个人比第1个人多了多少糖果
思路:初识差分约束系统,最短路倒是很久以前就会了。。。b - a <= c转换成b <= a + c,这是差分约束系统的标准形式,于是从a向b建边,权值为c。执行完最短路后,有dis
- dis[1] <= res,题目求最大值,即为dis
- dis[1] = res
总结:终于见到了大神吐槽的最短路求不等式
题意:给n个小朋友发糖果,有如下一些关系:a b c,代表第b个人得到的糖果不多于第a个人c个,即b - a <= c。最后在满足所有关系的情况下,求第n个人比第1个人多了多少糖果
思路:初识差分约束系统,最短路倒是很久以前就会了。。。b - a <= c转换成b <= a + c,这是差分约束系统的标准形式,于是从a向b建边,权值为c。执行完最短路后,有dis
- dis[1] <= res,题目求最大值,即为dis
- dis[1] = res
总结:终于见到了大神吐槽的最短路求不等式
#include <iostream> #include <cstdio> #include <cstring> #include <algorithm> #include <queue> using namespace std; const int N = 30010; typedef pair<int, int> P; struct node { int to, cost, next; }g[N*5]; int head , dis , used ; int n, m, cnt; void add_edge(int v, int u, int cost) { g[cnt].to = u; g[cnt].cost = cost; g[cnt].next = head[v]; head[v] = cnt++; } void dijkstra(int s, int t) { priority_queue<P, vector<P>, greater<P> > que; used[s] = true; dis[s] = 0; que.push(P(0, s)); while(! que.empty()) { P p = que.top(); que.pop(); int v = p.second; if(dis[v] < p.first) continue; for(int i = head[v]; i != -1; i = g[i].next) { int u = g[i].to; if(dis[u] > dis[v] + g[i].cost) dis[u] = dis[v] + g[i].cost, que.push(P(dis[u], u)); } } } int main() { int a, b, c; while(~ scanf("%d%d", &n, &m)) { memset(head, -1, sizeof head); memset(dis, 0x3f, sizeof dis); memset(used, 0, sizeof used); cnt = 0; for(int i = 0; i < m; i++) { scanf("%d%d%d", &a, &b, &c); add_edge(a, b, c); } dijkstra(1, n); printf("%d\n", dis ); } return 0; }
相关文章推荐
- 大数据入门:各种大数据技术介绍
- IIS部署网站
- IOS开发之简单音频播放器
- Apache GraphX 图文详解
- JavaScript小技巧
- solution Of 1098. Insertion or Heap Sort (25)
- Mac 上所有的命令行相关问题的总结
- 轻量级分布式 RPC 框架
- 接口测试用例设计
- AVL树,红黑树,B树,B+树,Trie树都分别应用在哪些现实场景中
- 十大Material Design开源项目
- GIthub开源项目实现翻页效果(FlipView)
- mjpg-streamer在Ubuntu下编译,运行
- Android WheelView 详解
- HTML中让边框变成圆形并且带有阴影
- poj 1390 Blocks(记忆化搜索/动态规划)
- PHP-网络请求 GET、POST、PUT、DELETE
- css-tricks
- 递归求二叉树的深度
- nginx变量使用方法详解(3)