題目中x1-x'1<=y1可以轉變為
x1<=x'1+y1
換一下字母更顯然易見:dis[v]<=dis[u]+edge[i].w
那麼便可以轉換成圖上的最短路問題(解集),因為題中並沒有說明是聯通圖,可以設乙個超級源點,然後向每個節點連一條邊權為0的邊,然後從0點開始做最短路。
注意建邊是從x'1連向x1。
ac**:
1 #include2 #include3 #include4 #include5ac**using
namespace
std;
6int
n,m,tot;
7const
int n=5005;8
struct
nodeedge[n<<1
];11
int head[n],dis[n],vis[n],in
[n];
12void add(int u,int v,int
w) 18
bool spfa(int
u)30}31
}32}33
return1;
34}35int
main()
44for(int i=1;i<=n;i++) add(0,i,0
);45
if(spfa(0)==0)
46for(int i=1;i<=n;i++) printf("
%d "
,dis[i]);
47return0;
48 }
P5960 模板 差分約束演算法
我記得以前寫過差分約數的部落格,可是找不到了,就再寫一遍吧。a b k a b k 要求最終結果滿足這個式子,加源點跑最短路,若能跑出來,則最終一定滿足。include include include include include include include define ll long lo...
P5960 模板 差分約束演算法
h yp erli nk hyperlink hyperl ink de scri ptio ndescription descri ptio n 給定乙個形如xi xj y x i x j leq y xi xj y的n nn元一次不等式組 求x xx的一組整數解 s ol utio nsolut...
洛谷5960 模板 差分約束演算法 題解
雖然說知道這玩意可是從來沒寫過 同時記錄差分約束原理。對於給定的式子 x y le c 移動之得 x le y c 轉換為圖論模型,做起點,終點,權值為 y,x,c 的邊,可發現如果我們對這個圖跑最短路 先不要管怎麼跑出來的233 那麼一定有 dis x le dis y c 也就是說,此時每個點的...