POJ 3159 Candies(差分约束)
http://poj.org/problem?id=3159
题意:有向图,第一行n是点数,m是边数,每一行有三个数,前两个是有向边的起点与终点,最后一个是权值,求从1到n的最短路径。
思路:这个题让会神给讲的,用的dijkstra,看的网上很多用SPFA的。
关于SPFA:http://www.cnblogs.com/devtang/archive/2011/08/25/spfa.html
http://blog.csdn.net/chenjiang492943457/article/details/5375413
关于差分约束系统:http://www.cnblogs.com/void/archive/2011/08/26/2153928.html
代码:
#include <stdio.h>
#include <string.h>
#include <algorithm>
#include <queue> using namespace std ;
const int maxn = ;
const int maxm = ;
int head[maxn],next[maxm] ;
int map[maxn] ;
bool vis[maxn] ;
const int INF = << ;
int cnt , n , m;
struct node
{
int u ;
int v ;
int c ;
node(){}
node(int u,int v,int c):u(u),v(v),c(c){} }edge[maxm] ; struct node1
{
int v,c ;
node1(){}
node1(int v,int c):v(v),c(c){}
bool operator <(const node1 &a)const
{
return c > a.c ;
}
} ;
void addnode(int u,int v,int c)
{
edge[cnt] = node(u,v,c) ;
next[cnt] = head[u] ;
head[u] = cnt++ ;
} ;
bool relax(int u,int v,int c)
{
if(map[v] > map[u] + c)
{
map[v] = map[u]+c ;
return true ;
}
return false ;
} void Init()
{
memset(head,-,sizeof(head)) ;
memset(next,-,sizeof(next)) ;
cnt = ;
for(int i = ; i < m ; i++)
{
int x,y,z ;
scanf("%d %d %d",&x,&y,&z) ;
addnode(x,y,z) ;
}
} void dija(int sh)
{
memset(vis,,sizeof(vis)) ;
for(int i = ; i <= n ; i++)
map[i] = INF ;
map[sh] = ;
priority_queue<node1>Q ;
Q.push(node1(sh,map[sh])) ;
for(int i = ; i < n ; i++)
{
while(!Q.empty() && vis[Q.top().v]) Q.pop() ;
if(Q.empty()) break ;
node1 temp = Q.top() ;
Q.pop() ;
vis[temp.v] = true ;
for(int j = head[temp.v] ; j != - ; j = next[j])
{
if(relax(temp.v,edge[j].v,edge[j].c) && !vis[edge[j].v])
Q.push(node1(edge[j].v,map[edge[j].v])) ;
}
}
}
int main()
{
while(~scanf("%d %d",&n,&m))
{
Init() ;
dija() ;
printf("%d\n",map[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 ...
随机推荐
- activity和fragment的声明周期
Activity生命周期: Fragment生命周期:
- 【JAVA】浅谈java枚举类
一.什么情况下使用枚举类? 有的时候一个类的对象是有限且固定的,这种情况下我们使用枚举类就比较方便? 二.为什么不用静态常量来替代枚举类呢? public static final int SEASO ...
- Xcode7 网络请求报错
xcode7 网络报错: The resource could not be loaded because the App Transport Security policy reguir 原因:iO ...
- 使用c#生成Identicon图片
Identicon是什么 我们在站点注册的时候通常系统会在我们没有提供自定义头像时为我们指定一个默认的头像,不过,样子千篇一律很是难看.聪明的程序员想了很多办法来解决这个问题,比如你能在这里看到很漂亮 ...
- ios 兼容IPV4和IPV6网络通信
前言: 苹果官方出了新的规定,要求新上架的app都必须单独支持ipv6-only的网络. 准备工作: 搭建IPV6测试环境:http://blog.csdn.net/potato512/article ...
- textLayout在快速输入清除时报错解决方法
var tf:TextFlow; var len:int = tf.numChildren;for (var i:int = 0; i < len; i += 1){ tf.removeChil ...
- Mysql 的函数
函数 MySQL函数分为系统函数与自定义函数 系统函数: pow(m,n) 求m的n次方 rand() 随机获取0至1之间的小数 floor(); ...
- Javascript访问css样式信息
DOM2级样式为style对象定义了一些属性和方法,可以通过这些方法属性来访问或者修改元素的样式信息: 1.cssText:可读写,在读的情况下以字符串形式返回元素的css代码,在写的情况下以字符串形 ...
- PHP权限分配思路
常见四种方式1.用户+组+角色+权限2.用户+组+权限3.用户+角色+权限(最多用)4.用户+权限以第三种为例:权限:用户操作的具体事件:如curd角色:指一类用户拥有的权限,如超级管理员,管理员,普 ...
- 使用vagrant作为开发环境后,js报错
当你尝试修改一个js,并且用同样的方法更新之后,会遇到类似的问题,是的,就算重启VM上任何服务,甚至重启VM,依旧没有用,当然,比起其他资源文件,浏览器的反应会强烈一些,因为浏览器会提示未知错误,而你 ...