題目連線
題意:
給n個小朋友發糖,如果小朋友a發現小朋友b比他多c個糖,a就不開心。要使所有小朋友都開心,問第乙個小朋友和最後乙個小朋友獲得的糖相差最大為多少。
題解:
一、spfa卡佇列,用棧能過。
不需要判斷負環的情況下,用棧更快,也會更省空間。
#include #include #include #include #include #include #include using namespace std;
typedef long long ll;
int n,m;
struct edge
}e[150005];
int head[150005],now=-1;
void add(int a,int b,int c)
int vis[30005],dis[30005],num[30005];
void spfa()}}
}}int main()
spfa();
printf("%d\n",dis[n]);
}
二、由於題目沒有負權邊,也可以用dijstra求最短路。
#include #include #include #include #include #include using namespace std;
typedef long long ll;
int n,m;
struct edge
}e[150005];
int head[150005],now=-1;
void add(int a,int b,int c)
struct node
bool operator
};int vis[30005],dis[30005];
void dij()}}
}int main()
dij();
printf("%d\n",dis[n]);
}
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...
POJ 3159 Candies 差分約束
差分約束是把不等關係換成圖,求乙個點減乙個點的最大 最小 值 對於公式a b c 我們的問題是求乙個點減乙個點的最大值,作為邊的話,b a的權值為c,求一遍最短路。對於公式a b c 我們的問題是求乙個點減乙個點的最小值,作為邊的話,b a的權值為c,求一遍最長路。具體問題具體分析,把數字轉化成點,...