POJ 3159 Candies 差分約束

2021-08-19 07:51:33 字數 1076 閱讀 7793

題目連線

題意:

給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,求一遍最長路。具體問題具體分析,把數字轉化成點,...