POJ3169 Layout 差分約束系統 三星

2021-07-06 08:09:08 字數 1041 閱讀 1529

codevs

由於是英文題目就不再複製題面了~

昨天看cv月賽的題看到這個題,因為std有個地方看不懂所以自己再做了一下。

這樣約束條件都列舉了出來,之後再建邊就行了,-1的情況是無解的情況,即存在負環,-2的情況是無法約束1到n距離的情況,即再約束系統中沒有從1到達n的路徑,如果都不是上面兩種情況,就輸出答案。

網上有篇std是將約束條件①反過來讀,就是先讀b再讀a然後b->a建邊……和我的想法其實是一致的qaq

完整**:

#include

#include

#include

#include

#include

#include

using

namespace

std;

typedef

long

long ll;

const

int size = 100010;

const

int inf = 1077952576;

struct edgeedges[size];

int head[size],next[size],tot;

void build(int f,int t,int d)

int n,m,k;

int dist[size],cishu[size];

bool vis[size];

deque

q;bool spfa()}}

}return

false;

}int main()

for(int i = 1;i <= k;i ++)

for(int i = 1;i < n;i ++) build(i+1,i,0);

if(spfa()) puts("-1");

else

if(dist[n] == inf) puts("-2");

else

printf("%d",dist[n]);

return

0;}

POJ 3169 Layout(差分約束)

題目大意 當排隊等候餵食時,奶牛喜歡和它們的朋友站得靠近些。fj有n 2 n 1000 頭奶牛,編號從1到n,沿一條直線站著等候喂 食。奶牛排在隊伍中的順序和它們的編號是相同的。因為奶牛相當苗條,所以可能有兩頭或者更多奶牛站在同一位置上。即使說,如果我們想象奶牛是站在一條數軸上的話,允許有兩頭或更多...

POJ3169 Layout 差分約束)

題意 一堆牛在一條直線上按編號站隊,在同一位置可以有多頭牛並列站在一起,但編號小的牛所佔的位置不能超過編號大的牛所佔的位置,這裡用d i 表示編 號為i的牛所處的位置,即要滿足d i d i 1 0,同時每兩頭牛之間有以下兩種關係 對於輸入的a b d來說 1 如果是喜歡關係 即需要滿足d b d ...

POJ3169 Layout 差分約束

題目鏈結。分析 對於任意i號奶牛,1 id i 1 d i 0 對於每個好感的描述 i,j,k 假設i j,體現到距離上的要求就是 d j d i k 對於每個反感的描述 i,j,k 假設i j,體現到距離上的要求就是 d j d i k 寫成我們約定的形式 d i d i 1 0 d j d i ...