poj 3159 Candies (差分约束)
一个叫差分约束系统的东西。如果每个点定义一个顶标x(v),x(t)-x(s)将对应着s-t的最短路径。

比如说w+a≤b,那么可以画一条a到b的有向边,权值为w,同样地给出b+w2≤c,a+w3≤c。那么a到c的最大差就受这些不等式约束,对应着图中的最短路。
这个边多,不要用vector存,满了以后重新复制数据,会T的,没试过指定大小。。。
#include<iostream>
#include<cstdio>
#include<vector>
#include<cstring>
#include<queue>
using namespace std;
//POJ 是个坑
const int maxn = 3e4+;
const int maxm = 15e4+;
struct Edge
{
int v,w,nxt;
//Edge(int v = 0,int w = 0):v(v), w(w){}
}edges[maxm]; int ecnt,head[maxn]; typedef pair<int,int> Node;
#define fi first
#define se second void addEdge(int u,int v,int w)
{
edges[++ecnt].v = v;
edges[ecnt].w = w;
edges[ecnt].nxt = head[u];
head[u] = ecnt;
} int d[maxn]; const int INF = 0x7f7f7f7f; int dijkstra(int s, int t)
{
priority_queue<Node,vector<Node>,greater<Node> > q;
memset(d,0x7f,sizeof(d));
q.push(Node(d[s] = ,s));
while(q.size()){
Node x = q.top(); q.pop();
int u = x.se;
if(u == t) return d[t];
if(x.fi != d[u]) continue;
for(int i = head[u]; i; i = edges[i].nxt){
Edge &e = edges[i];
if(d[e.v] - d[u] > e.w){
d[e.v] = d[u] + e.w;
q.push(Node(d[e.v],e.v));
}
}
}
return INF;
} int main()
{
//freopen("in.txt","r",stdin);
int n,m; cin>>n>>m;
while(m--){
int u,v,w; scanf("%d%d%d",&u,&v,&w);
addEdge(u-,v-,w);
}
printf("%d\n",dijkstra(,n-));
return ;
}
poj 3159 Candies (差分约束)的更多相关文章
- POJ 3159 Candies 差分约束dij
分析:设每个人的糖果数量是a[i] 最终就是求a[n]-a[1]的最大值 然后给出m个关系 u,v,c 表示a[u]+c>=a[v] 就是a[v]-a[u]<=c 所以对于这种情况,按照u ...
- [poj 3159]Candies[差分约束详解][朴素的考虑法]
题意 编号为 1..N 的人, 每人有一个数; 需要满足 dj - di <= c 求1号的数与N号的数的最大差值.(略坑: 1 一定要比 N 大的...difference...不是" ...
- poj 3159 Candies 差分约束
Candies Time Limit: 1500MS Memory Limit: 131072K Total Submissions: 22177 Accepted: 5936 Descrip ...
- POJ 3159 Candies (图论,差分约束系统,最短路)
POJ 3159 Candies (图论,差分约束系统,最短路) Description During the kindergarten days, flymouse was the monitor ...
- POJ 3159 Candies(SPFA+栈)差分约束
题目链接:http://poj.org/problem?id=3159 题意:给出m给 x 与y的关系.当中y的糖数不能比x的多c个.即y-x <= c 最后求fly[n]最多能比so[1] ...
- POJ 3159 Candies(差分约束,最短路)
Candies Time Limit: 1500MS Memory Limit: 131072K Total Submissions: 20067 Accepted: 5293 Descrip ...
- POJ 3159 Candies 解题报告(差分约束 Dijkstra+优先队列 SPFA+栈)
原题地址:http://poj.org/problem?id=3159 题意大概是班长发糖果,班里面有不良风气,A希望B的糖果不比自己多C个.班长要满足小朋友的需求,而且要让自己的糖果比snoopy的 ...
- POJ 3159 Candies(差分约束+spfa+链式前向星)
题目链接:http://poj.org/problem?id=3159 题目大意:给n个人派糖果,给出m组数据,每组数据包含A,B,C三个数,意思是A的糖果数比B少的个数不多于C,即B的糖果数 - A ...
- 图论--差分约束--POJ 3159 Candies
Language:Default Candies Time Limit: 1500MS Memory Limit: 131072K Total Submissions: 43021 Accep ...
- (简单) POJ 3159 Candies,Dijkstra+差分约束。
Description During the kindergarten days, flymouse was the monitor of his class. Occasionally the he ...
随机推荐
- Flutter汇总贴
Fluuter常遇到的问题 Flutter从入门到进阶实战携程网App_汇总贴 Flutter教程网 http://www.flutterj.com/ 第三季:https://jspang.com/p ...
- 怎么判断DropDownList是否选择值
判断其 SelectedIndex 属性值 >0.
- LeetCode: 598 Range Addition II(easy)
题目: Given an m * n matrix M initialized with all 0's and several update operations. Operations are r ...
- element ui 修改默认样式
修改element ui默认的样式 如果要组件内全局修改 首先在浏览器里F12找到element默认的UI类名 找到要修改的默认类名以后 在文件中修改代码,重写属性 <style> .el ...
- AtCoder Beginner Contest 052
没看到Beginner,然后就做啊做,发现A,B太简单了...然后想想做完算了..没想到C卡了一下,然后还是做出来了.D的话瞎想了一下,然后感觉也没问题.假装all kill.2333 AtCoder ...
- ue4 打个log难如狗
注意: 把log相关两个宏写到类中,并编译后,在输出日志的位置的Categories关键字过滤的位置看不到自己的标签是因为需要先运行一次,输出一些这个标签的log后,这个自定义的标签才会显示在这 原文 ...
- Angular.js思维导图
AngularJS的四大特性的思维导图如下: 将AngularJS应用于工作:其思维导图如下: AngularJS服务思维导图:
- 正整数构成的线性表存放在单链表中,编写算法将表中的所有的奇数删除。(C语言)
/* 正整数构成的线性表存放在单链表中,编写算法将表中的所有的奇数删除 */ #include <stdio.h> #include <stdlib.h> typedef st ...
- 查找库中的某个函数,grep命令的用法。
程序中调用了某个库中的函数,我想知道这个函数具体的作用,就必须去看这个库的源代码. 那么问题来了:如何从库中众多的.h文件中,得知我想要的函数在哪个文件里? 最后用grep命令成功解决. 具体用法:先 ...
- ES6新特性使用小结(一)
一.let const 命令 'use strict'; /*function test(){ //let a = 1; for(let i=1;i<3;i++){ console.log(i) ...