poj-3159-Candies-差分约束+stack
2013-03-11 21:00
369 查看
题意:
flymouse是幼稚园班上的班长,一天老师给小朋友们买了一堆的糖果,由flymouse来分发。flymouse希望自己分得的糖果数尽量多于snoopy。对于其他小朋友而言,则必须自己得到的糖果不少于班上某某,给出m个这种约束关系(u,v, w)即同学u的糖果数不能比同学v的糖果数少w。问flymouse最多能多snoopy几个糖果。
差分约束问题;
注意:
1,注意用vis标记已经走过的,要不然会re。
2,注意路径的加入
差分约束条件:
1,a b c b-a<=c;
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 1000000000 using 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 ; } 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
- poj 3159 Candies
- POJ 3159 Candies(差分约束)
- SPFA+Stack||Dijkstra+Heap-POJ-3159-Candies
- POJ3159 Candies(差分约束)
- POJ 3159 Candies (差分约束 Dijkstra+优先队列 SPFA+栈)
- poj 3159 Candies
- poj 3159 Candies 【简单差分约束】 【SPFA + 数组模拟栈】
- poj 3159 -- Candies ( spfa + 栈 )
- POJ 3159 Candies
- poj 3159 Candies
- POJ-3159-Candies
- POJ 3159 Candies 解题报告(Dijkstra & SPFA) 及 双向Dijkstra性能测试
- (简单) POJ 3159 Candies,Dijkstra+差分约束。
- POJ 3159 Candies(差分规划+SPFA)
- poj 3159 Candies
- poj-3159 Candies(差分约束问题)
- POJ 3159 Candies (差分约束 Dijkstra+优先队列 SPFA+栈)
- poj 3159 candies (差分约束 spfa+stack)
- poj 3159 Candies------spfa算法