小K的農場 差分約束

2021-07-11 23:09:06 字數 1432 閱讀 9684

description背景

小k是個特麼喜歡玩mc的孩紙。。。

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

input

第一行包括兩個整數n和m,分別表示農場數目和小k記憶中的資訊的數目

接下來m行:

如果每行的第乙個數是1,接下來有三個整數a,b,c,表示農場a比農場b至少多種植了c個單位的作物

如果每行第乙個數是2,接下來有三個整數a,b,c,表示農場a比農場b至多多種植了c個單位的作物

如果每行第乙個數是3,接下來有兩個整數a,b,表示農場a種植的數量與b一樣多輸出格式

output

如果存在某種情況與小k的記憶吻合,輸出」yes」,否則輸出」no」

sample input

3 3

3 1 2

1 1 3 1

2 2 3 2

#include

#include

#include

#include

#define inf 0x7fffffff

#define maxn 23333

using

namespace std;

int next[maxn],head[maxn],to[maxn],len[maxn];

int dis[maxn];

int n,m,num,flag=0;

bool vis[maxn];

void

build

(int x,

int y,

int z)

void

spfa

(int x)// 遞迴spfa 速度有點慢 這個題還是能水一水的

dis[to[p]]=dis[x]+len[p];

spfa

(to[p]);

} vis[x]=0;

}int

main

()if

(op==2)

if(op==3)

build

(x,y,0);

}for

(int i=

1;i<=n;i++)

if(flag==1)

printf

("no\n"

);else

printf

("yes\n"

);return0;

}

小K的農場(差分約束,spfa)

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

BZOJ 3436 小k的農場(差分約束)

description 背景 小k是個特麼喜歡玩mc的孩紙。描述小k在mc裡面建立很多很多的農場,總共n個,以至於他自己都忘記了每個農場中種植作物的具體數量了,他只記得一些含糊的資訊 共m個 以下列三種形式描述 農場a比農場b至少多種植了c個單位的作物,農場a比農場b至多多種植了c個單位的作物,農場...

P1993 小K的農場(差分約束)

小k的農場 題目描述 小k在mc裡面建立很多很多的農場,總共n個,以至於他自己都忘記了每個農場中種植作物的具體數量了,他只記得一些含糊的資訊 共m個 以下列三種形式描述 農場a比農場b至少多種植了c個單位的作物,農場a比農場b至多多種植了c個單位的作物,農場a與農場b種植的作物數一樣多。但是,由於小...