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