幼兒園裡有 nn
個小朋友,老師現在想要給這些小朋友們分配糖果,要求每個小朋友都要分到糖果。但是小朋友們也有嫉妒心,總是會提出一些要求,比如小明不希望小紅分到的糖果比他的多,於是在分配糖果的時候, 老師需要滿足小朋友們的 kk
個要求。幼兒園的糖果總是有限的,老師想知道他至少需要準備多少個糖果,才能使得每個小朋友都能夠分到糖果,並且滿足小朋友們所有的要求。輸入格式輸入的第一行是兩個整數 n,kn,k
。接下來 kk
行,表示分配糖果時需要滿足的關係,每行 33
個數字 x,a,bx,a,b
。如果 x=1x=1
.表示第 aa
個小朋友分到的糖果必須和第 bb
個小朋友分到的糖果一樣多。如果 x=2x=2
,表示第 aa
個小朋友分到的糖果必須少於第 bb
個小朋友分到的糖果。如果 x=3x=3
,表示第 aa
個小朋友分到的糖果必須不少於第 bb
個小朋友分到的糖果。如果 x=4x=4
,表示第 aa
個小朋友分到的糖果必須多於第 bb
個小朋友分到的糖果。如果 x=5x=5
,表示第 aa
個小朋友分到的糖果必須不多於第 bb
個小朋友分到的糖果。小朋友編號從 11
到 nn
。輸出格式輸出一行,表示老師至少需要準備的糖果數,如果不能滿足小朋友們的所有要求,就輸出 −1−1
。資料範圍1≤n<1051≤n<105
,1≤k≤1051≤k≤105
,1≤x≤51≤x≤5
,1≤a,b≤n1≤a,b≤n
輸入樣例:5 7
1 1 2
2 3 2
4 4 1
3 4 5
5 4 5
2 3 5
4 5 1
輸出樣例:11
#include
#include
#include
#include
using
namespace std;
const
int n =
1000010
, m =
3000010
;typedef
long
long ll;
int n, m;
int h[n]
, e[m]
, w[m]
, ne[m]
, idx;
ll dist[n]
;int q[n]
, cnt[n]
;bool st[n]
;void
add(
int a,
int b,
int c)
bool
spfa()
}}}return
true;}
intmain()
for(
int i =
1; i <= n; i ++
)add(0
, i,1)
;if(!
spfa()
)puts
("-1");
else
return0;
}
差分約束 糖果
幼兒園裡有 n 個小朋友,老師現在想要給這些小朋友們分配糖果,要求每個小朋友都要分到糖果。但是小朋友們也有嫉妒心,總是會提出一些要求,比如小明不希望小紅分到的糖果比他的多,於是在分配糖果的時候,老師需要滿足小朋友們的 k 個要求。幼兒園的糖果總是有限的,老師想知道他至少需要準備多少個糖果,才能使得每...
差分約束 糖果
幼兒園裡有n個小朋友,lxhgww老師現在想要給這些小朋友們分配糖果,要求每個小朋友都要分到糖果。但是小朋友們也有嫉妒心,總是會提出一些要求,比如小明不希望小紅分到的糖果比他的多,於是在分配糖果的時候,lxhgww需要滿足小朋友們的k個要求。幼兒園的糖果總是有限的,lxhgww想知道他至少需要準備多...
分糖果 差分約束
description 幼兒園裡有n 個小朋友,lxhgww 老師現在想要給這些小朋友們分配糖果,要求每個小朋友都要分到糖果。但是小朋友們也有嫉妒心,總是會提出一些要求,比如小明不希望小紅分到的糖果比他的多,於是在分配糖果的時候,lxhgww 需要滿足小朋友們的 k個要求。幼兒園的糖果總是有限的,l...