Candies POJ 3159 (堆优化的SPFA,)
来源:互联网 发布:简易计税算法 编辑:程序博客网 时间:2024/05/18 02:33
开始看半天看不懂题目意思,原来是~~~
分差约束系统:
全都是两个未知数的差小于等于某个常数(大于等于也可以,因为左右乘以-1就可以化成小于等于)。这样的不等式组就称作差分约束系统。
也就是说求1到N的最短路就行了。
但是这道题数据比较大,m = 150000,只能用堆优化的SPFA
#include<cstdio>#include<iostream>#include<cstring>#include<algorithm>#include<queue>#include <stack>using namespace std;const int inf = 0x3f3f3f3f;const int maxn = 150005;int Left[maxn],Right[maxn],Next[maxn],key[maxn],dict[maxn],n,m,cnt;bool vis[maxn];void init() { cnt = 0; memset(vis,false,sizeof(vis)); memset(Left,-1,sizeof(Left)); memset(dict,inf,sizeof(dict));}void add(int u,int v,int value) { key[cnt] = value; Next[cnt] = Left[u]; Left[u] = cnt; Right[cnt] = v; cnt++;}void SPFA(int start) { dict[start] = 0; vis[start] = true; stack<int> q; //头文件里加stack再定义一个就行; while(!q.empty()) q.pop(); q.push(start); while(!q.empty()) { int temp = q.top(); //和队列不同的是这里改成q.top; q.pop(); vis[temp] = false; for(int i = Left[temp];i != -1;i = Next[i]) { if(dict[Right[i]] > dict[temp] + key[i]) { dict[Right[i]] = dict[temp] + key[i]; if(!vis[Right[i]]) { vis[Right[i]] = true; q.push(Right[i]); } } } }}int main() { while(scanf("%d%d",&n,&m) != EOF) { init(); int u,v,value; for(int i = 0;i < m;i++) { scanf("%d%d%d",&u,&v,&value); add(u,v,value); } SPFA(1); printf("%d\n",dict[n]); }}
0 0
- Candies POJ 3159 (堆优化的SPFA,)
- POJ 3159 Candies (Dijkstra+堆优化) .
- poj 3159 Candies(查分约束+堆栈优化的spfa最短路模板)
- poj 3159 -- Candies ( spfa + 栈 )
- poj 3159 Candies------spfa算法
- POJ 3159 Candies(SPFA+stack)
- poj 3159 Candies (spfa+stack)
- POJ——3159Candies(差分约束SPFA+前向星+各种优化)
- poj 3159 Candies (spfa+栈)
- poj 3159 Candies(差分约束 spfa stack实现)
- poj——3159——Candies(spfa)
- POJ 3159 Candies(SPFA+栈)差分约束
- POJ 3159 Candies(spfa最短路,差分约束)
- POJ 3159 Candies(差分约束+SPFA )
- 【poj 3159】Candies 差分约束+spfa(stack)
- POJ 3159 Candies(差分规划+SPFA)
- 【POJ 3159】Candies(差分约束+SPFA)
- POJ 3159 Candies(差分规划+SPFA)
- 求一个数组中第k大的数
- 【VS开发】【智能语音处理】特定人语音识别算法—DTW算法
- 王道部分笔记
- 双向队列的应用
- Python 面向对象编程容易忽视的知识点
- Candies POJ 3159 (堆优化的SPFA,)
- 《紫fa岛APP》手游app—soso
- Android Handler机制的原理
- Git使用小结
- Android之edittext取消默认弹出软键盘
- Bitmap的高效加载
- hdu 3586(树形dp+二分)
- 关于在一套复制环境中使用不同版本OGG的问题
- cordova添加android平台时选择安装版本