poj-3159-Candies-差分约束+stack
来源:互联网 发布:php仓库管理mysql 编辑:程序博客网 时间:2024/05/22 17:02
题意:
flymouse是幼稚园班上的班长,一天老师给小朋友们买了一堆的糖果,由flymouse来分发。flymouse希望自己分得的糖果数尽量多于snoopy。对于其他小朋友而言,则必须自己得到的糖果不少于班上某某,给出m个这种约束关系(u,v, w)即同学u的糖果数不能比同学v的糖果数少w。问flymouse最多能多snoopy几个糖果。
差分约束问题;
注意:
1,注意用vis标记已经走过的,要不然会re。
2,注意路径的加入
差分约束条件:
1,a b c b-a<=c;
#include<iostream>#include<stdio.h>#include<string.h>#include<stack>#include<algorithm>#define INF 1000000000using namespace std;struct list{ int next; int r; int len;}node[150001];int dist[30001];int head[30001];int vis[30001];int n,m;int num;void add(int a,int b,int c){ node[num].next=head[a]; node[num].r=b; node[num].len=c; head[a]=num++;}int spfa(){ int i; stack<int>q; for(i=1;i<=n;i++) dist[i]=INF; q.push(1); dist[1]=0; vis[1]=1; while(!q.empty()) { int e; e=q.top(); q.pop(); vis[e]=0; for(i=head[e];i;i=node[i].next) { if(dist[node[i].r]>dist[e]+node[i].len) { dist[node[i].r]=dist[e]+node[i].len; if(!vis[node[i].r]) { vis[node[i].r]=1; q.push(node[i].r); } } } } return dist[n];}int main(){ int i,a,b,c; scanf("%d%d",&n,&m); memset(head,0,sizeof(head)); num=1; for(i=0;i<m;i++) { scanf("%d %d %d",&a,&b,&c); add(a,b,c); } printf("%d\n",spfa()); return 0;}
- poj-3159-Candies-差分约束+stack
- POJ 3159 Candies [差分约束系统 SPFA+STACK]
- poj 3159 Candies(差分约束 spfa stack实现)
- 【poj 3159】Candies 差分约束+spfa(stack)
- POJ 3159 Candies(差分约束系统)
- 【POJ 3159】 Candies 差分约束系统
- POJ 3159 Candies 差分约束+spfa
- POJ--3159[Candies] 差分约束
- poj 3159 Candies 差分约束 + spfa
- 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
- 函数指针和指针函数
- Java类的初始化
- Android经典的大牛博客推荐
- 虚幻三引擎参考文献
- linux命令行多窗口
- poj-3159-Candies-差分约束+stack
- js加强(二)
- 求助。安装WDK。error LNK1181
- 存储过程
- 自己创建CoreData所需要的相应类
- 如何提高转化率
- Python的多线程支持-pybatis的准备阶段(十一)
- C++ 数组array与vector的比较
- 网赚项目之站群第三课 站群上线以及注意事项