洛谷 P1993 小K的農場 最短路 差分約束

2021-09-26 09:52:00 字數 1209 閱讀 5870

小k在mc裡面建立很多很多的農場,總共n個,以至於他自己都忘記了每個農場中種植作物的具體數量了,他只記得一些含糊的資訊(共m個),以下列三種形式描述:

但是,由於小k的記憶有些偏差,所以他想要知道存不存在一種情況,使得農場的種植作物數量與他記憶中的所有資訊吻合。

1<=n,m<=1e4

在差分約束系統中,

最長路無正環才有解,最短路無負環才有解,聯絡不等式性質顯然

安利一波國家集訓隊**2009姜碧野《spfa演算法的優化及應用》

知道有個dfs優化的spfa就好了,比常規spfa表現好,雖然也可以被惡意卡

最長路,遞迴搜,判有無正環,無正環才有解

建乙個0的虛點,和所有點相連,從而保證整張圖連通

洛谷的題目,時限卡得太嚴了qaq

//x>=y+z y->x連z的邊 跑最長路 這裡是最長路 

//x<=y+z y->x連z的邊 跑最短路

//如果不能保證圖連通 建乙個虛點連向所有點從而保證連通

//只建<=或》=的圖 剩下的變號變過來

//x==y的 建x-y>=0和y-x>=0

#include #include #include #include using namespace std;

typedef long long ll;

const int inf=0x3f3f3f3f;

const int n=1e4+10;

int rd()

int n,m,dis[n];

int head[n],cnt;

int op,a,b,c;

bool vis[n];

struct edge

e[n*3];

void init()

//實際1-n的點 0是虛點保證圖連通

bool spfa(int u)

} vis[u]=0;

return 1;

}void add(int u,int v,ll w)

int main()

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

if(!spfa(0))puts("no");

else puts("yes");

return 0;

}

洛谷P1993 小K的農場

小k在mc裡面建立很多很多的農場,總共n個,以至於他自己都忘記了每個農場中種植作物的具體數量了,他只記得一些含糊的資訊 共m個 以下列三種形式描述 但是,由於小k的記憶有些偏差,所以他想要知道存不存在一種情況,使得農場的種植作物數量與他記憶中的所有資訊吻合。輸入格式 第一行包括兩個整數 n 和 m,...

洛谷P1993 小K的農場

這道題的實質是差分約束。我們逐個分析。設 a 農場中有 d a 個單位植物,b 農場為 d b 對於第一點,則滿足 d a d b geq c 變形下就變成 d b d a leq c 對於第二點 d a d b leq c 對於第三點 d a d b 即 d a d b 0 變成不等式就要同時滿足...

洛谷 P1993 小K的農場

小k在mc裡面建立很多很多的農場,總共n個,以至於他自己都忘記了每個農場中種植作物的具體數量了,他只記得一些含糊的資訊 共m個 以下列三種形式描述 但是,由於小k的記憶有些偏差,所以他想要知道存不存在一種情況,使得農場的種植作物數量與他記憶中的所有資訊吻合。輸入格式 第一行包括兩個整數 n 和 m,...