題意:
好久沒做差分約束了,,, 看到這道題第一想法是貪心…………………………
思路:
差分約束
從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
#include
#include
#include
#include
using namespace std;
#define n 25555
int n,ml,md,w[n],v[n],next[n],first[n],dis[n],vis[n],inq[n],tot,xx,yy,zz;
void add(int
x,int
y,int z)
int spfa()
}return dis[n]>0x3ffffff?-2:dis[n];
}int main()
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...
POJ 3169 差分約束
題意 n頭牛,按照編號從左到右排列,兩頭牛可能在一起,接著有一些關係表示第a頭牛與第b頭牛相隔最多與最少的距離,最後求出第一頭牛與最後一頭牛的最大距離是多少,如 果最大距離無限大則輸出 2,如果關係不能保證則輸出 1 題解 差分約束的入門題 差分約束就是如果dis b dis a c轉化為a到b建一...
POJ 3169 差分約束 bellman
include include using namespace std define maxn 1002 define inf 1000000000 typedef int elem t elem t mat maxn maxn elem t min maxn int bellman ford in...