POJ 3159 - Candies(查分约束)
来源:互联网 发布:佛山seo外包 编辑:程序博客网 时间:2024/05/16 20:49
题目:
http://poj.org/problem?id=3159
题意:
给n个人派糖果,m组数据,(u,v,w)表示u比v的糖果少的个数不超过w,u-v <=w
最后求出n比1最多 多多少糖果。
思路:
查分约束。
对于(u,v,w)小值向大值建边(u,v).由于要一系列满足不等式,所以应该去(u,v)的最小值,所以转换为求最短路。
spfa算法+栈优化。
AC.
#include <iostream>#include <cstdio>#include <cstring>using namespace std;const int inf = 0x3f3f3f3f;const int maxn = 3e4+5;const int maxm = 15e4+5;int n, m;int tol, head[maxn];struct Edge{ int to, w, next;}edge[maxm];void addedge(int u, int v, int w){ edge[tol].to = v; edge[tol].w = w; edge[tol].next = head[u]; head[u] = tol++;}int vis[maxn], dis[maxn];int Q[maxn];void spfa(int s){ int top = 0; for(int i = 1; i <= n; ++i) { vis[i] = 0; dis[i] = inf; } vis[s] = 1; dis[s] = 0; Q[top++] = s; while(top != 0) { int u = Q[--top]; vis[u] = 0; for(int i = head[u]; ~i; i = edge[i].next) { int v = edge[i].to, w = edge[i].w; if(dis[v] > dis[u] + w) { dis[v] = dis[u] + w; if(!vis[v]) { vis[v] = 1; Q[top++] = v; } } } }}void init(){ tol = 0; for(int i = 1; i <= n; ++i) head[i] = -1;}int main(){ //freopen("in", "r", stdin); while(~scanf("%d %d", &n, &m)) { int u, v, w; init(); for(int i = 0; i < m; ++i) { scanf("%d%d%d", &u, &v, &w); addedge(u, v, w); //小->大 } spfa(1); printf("%d\n", dis[n]); } return 0;}
0 0
- POJ 3159 - Candies(查分约束)
- POJ 3159 Candies(差分约束系统)
- 【POJ 3159】 Candies 差分约束系统
- POJ 3159 Candies 差分约束+spfa
- POJ--3159[Candies] 差分约束
- poj 3159 Candies 差分约束 + spfa
- poj-3159-Candies-差分约束+stack
- POJ 3159 Candies 差分约束系统
- poj 3159 Candies 差分约束
- POJ 3159 Candies 差分约束
- POJ 3159 Candies(差分约束)
- POJ 3159 Candies(差分约束系统)
- poj 3159 Candies(差分约束)
- POJ 3159 Candies(差分约束)
- POJ 3159 Candies 差分约束
- 差分约束系统 & poj 3159 Candies
- poj--3159--Candies(简单差分约束)
- POJ 3159Candies (差分约束)
- android:baselineAligned="false"
- SVN服务器搭建和使用(二)
- 用VS2013在win7下编写的C++程序怎么在XP下运行?
- New delete 和 malloc free的区别
- 问题的种类以及解决
- POJ 3159 - Candies(查分约束)
- iplimage和Mat之间的转换
- 工具类apache.commons.lang.StringUtils 使用心得
- Linux命令(1):常用svn命令
- 鲁大师怎么检测电脑是否有间谍软件?
- 懒人css3样式代码生成器-一款懒人的样式生成代码工具
- 【循环列表】之魔术师的扑克牌问题
- 深入理解java虚拟机【并发编程缓存】
- STL—list