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 33 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種植的作物數一樣多。但是,由於小...