題意:
有一批糖果要由班長flymouse分發給班裡的小朋友,給出m對資料u,v,w,表示第u個小朋友不能比第v個小朋友少w個,但flymouse與snoopy不和,所以在滿足上述約束的條件下,flymouse要盡量比snoopy多。而對於其他小朋友而言,則只希望自己得到的糖果不少於班上某某其他人就行了。
分析:因此根據題意,可以列出如下的不等式:
sbi-sai<=ci(1=最終要使得sn-s1最大。求最短路時用到的三角形不等式中,最終對於每條有向邊(u,v)有: d[v]<=d[u]+w(u,v);
因此題目可以轉化為求最短路。
#include#includeconst int inf=0x3f3f3f3f;
const int v=30001;
const int e=150001;
int pnt[e],cost[e],nxt[e];
int e,head[v];
int dist[v];
bool vist[v];
int relax(int u,int v,int c)
return 0;
}void addedge(int u,int v,int c)
int spfa(int src,int n)
dist[src]=0;
int q[e],top=1;
q[0]=src;
vist[src]=true;
while(top)}}
return dist[n];
}int main()
printf("%d\n",spfa(1,n));
}return 0;
}
poj 3159 差分約束(分發糖果)
題意 flymouse是班長,由他來發糖果。flymouse希望自己的糖果數盡量多於snoopy。其他人必須使得自己的糖果不少於某某,給出m個這種約束關係 u,v,w 即u的糖果數不能比v的糖果數少w。問flymouse最多比snoopy多幾個糖果。思路 差分約束spfa。必須用棧 include ...
POJ 3159 Candies 差分約束
題目意思 flymouse是幼稚園班上的班長,一天老師給小朋友們買了一堆的糖果,由flymouse來分發,在班上,flymouse和snoopy是死對頭,兩人勢如水火,不能相容,因此fly希望自己分得的糖果數盡量多於 snoopy,而對於其他小朋友而言,則只希望自己得到的糖果不少於班上某某其他人就行...
POJ 3159 Candies 差分約束
poj 3159 n個點,每個點有權值p i 給出一些條件 即p j p i k,k 0。要求在滿足這些條件的情況下,求出p n p 1 的最大值。觀察最短路的性質,di st i di st j wt j,i 與p j p i k 形式很相似 di st i mi n p i m in這樣使p i...