思路:
假設i<=j:
兩隻奶牛可以站在同乙個位置,但是必須公升序排列,所以有差分約束方程d[i] - d[i+1] <= 0;
對於兩隻有好感的奶牛有差分約束方程d[j] -d[i ]<= k;
對於兩隻反感的奶牛有差分約束方程d[i] - d[j] <= - k;
有了約束方程就可以spfa;
#include#include#include#include#includeusing namespace std;
const int max=0x3f3f3f3f,mx=1010;
int n,ml,md,bb,h[mx],vis[mx],dis[mx],cen[mx];
structedg[mx*mx];
void add(int u,int v,int w)
int spfa()
}} }
return 0;
}int main()
for(int i=0;i
poj 3169 差分約束 spfa
include includeusing namespace std define inf 0x1fffffff int dist 10010 visited 10010 adj 10010 size,cnt 10010 int nodenum,edgenum1,edgenum2 struct no...
POJ 3169 差分約束
題意 好久沒做差分約束了,看到這道題第一想法是貪心 思路 差分約束 從i到i 1的距離 0 add i 1,i,0 對於互相討厭的牛從u到v的距離 d add v,u,d 對於互相喜歡的牛從u到v的距離 d add u,v,d 跑spfa就好了 順便判判dis 和入隊次數 by siriusren ...
poj3169 差分約束
關於差分約束,我強推這位大佬的部落格。題目是有的牛互相之間最多只能有乙個距離,有的牛最少要達到乙個距離。很容易寫出不等式,由於是要求最大值,所以是要化為小於等於號,求最短路。f i 表示i只牛在哪個位置 0 f b f a d f b f a d 等價於f a f b 0 f b f a d f a...