差分約束板子
差分約束:把 i - j >= x 操作等價於從 j 到 i 連一條邊權為 x 的邊。然後跑一遍spfa統計最短路,即為一組合法序列。
這道題裡要求以乙個點為基準點 0 ,在跑完spfa之後統計最小的dis值,然後按順序輸出dis值減去這個最小值即可。
另乙個問題是圖不一定連通,有兩個解決方法:
1.建乙個萬能點與所有的點相連,當然邊權都是0.
2.跑spfa的時候要記錄每個點的彈出次數,因此遍歷一遍點,彈出次數為0就spfa,否則continue
**:
#include#include#include
#include
#include
#include
using
namespace
std;
int n,m,h[2005]={},dis[2005]={},cnt=0,minn,que[1000500]={},times[2005]={},head,tail;
bool vis[2005]={};
struct
edge
e[10005
];void add(int u,int v,intw);
h[u]=cnt;
}void spfa(int
st) que[++tail]=v;}}
}}
vis[st]=0;}
intmain()
for(int i=1;i<=n;i++)
dis[i]=214748364
;
for(int i=1;i<=n;i++)
minn=999999999
;
for(int i=1;i<=n;i++)
minn=min(minn,dis[i]);
for(int i=1;i<=n;i++)
printf(
"%d\n
",dis[i]-minn);
return0;
}
P1260 工程規劃
題目非常得簡潔明瞭,差分約束的裸題,甚至連不等式都給你寫出來了 沒什麼好分析的,直接看不等式建立方程 這裡把 ti 和 tj 都表示為 i 和 j 因為求的應該是最早的開始時間,我們應該轉化為 然後跑最長路求解 i j leq b j leq b i j geq i b 那麼就應該是從 i 到 j ...
題解 P1260 工程規劃
建議完成以下題目後在來看此題 題解哦。p3385 模板 負環 p5960 模板 差分約束演算法 核心演算法 差分約束 這幾乎是一道裸題 題中寫道 不等式形如 t i t j leq b 代表 i 和 j 的起始時間必須滿足的條件。每個不等式的右邊都是乙個常數 b 這些常數可能不相同,但是它們都在區間...
P1260 工程規劃 差分約束
差分約束.差分約束似乎精髓就兩句話 所以對於本題的式子 ti tj leq b 可以寫成 t i b leq t j 然後就從 i 向 j 連一條 b 的邊然後跑最長路即可.按式子可以隨便搞.includeusing namespace std const int maxn 5008 struct ...