poj 3169 差分約束 spfa

2021-05-28 04:42:58 字數 612 閱讀 4570

#include#includeusing namespace std;

#define inf 0x1fffffff

int dist[10010],visited[10010],adj[10010],size,cnt[10010];

int nodenum,edgenum1,edgenum2;

struct node

head[100100];

void add(int s,int e,int v)

int spfa()

que.push(e);

}} }

return 1;

}int main()

for(i = 0;i < edgenum2;i++)

for(i = 1;i < nodenum;i++) //for(i = 2;i <= nodenum;i++)

add(i+1,i,0); //add(i,1,0);

int t = spfa();

if(!t)

printf("-1\n"); //有負權迴路

else

return 0;

}

POJ3169差分約束 SPFA 差分約束

思路 假設i j 兩隻奶牛可以站在同乙個位置,但是必須公升序排列,所以有差分約束方程d i d i 1 0 對於兩隻有好感的奶牛有差分約束方程d j d i k 對於兩隻反感的奶牛有差分約束方程d i d j k 有了約束方程就可以spfa include include include inclu...

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...