これは、トピックに行うには、グラフ理論ですが、数学的分析とACに逮捕することができます。
数学:
#include <ビット/ STDC ++ H> 名前空間STDを使用して、 長い長いT; 長い長いM、N、K。 長い長いS [1111] [1111]。 長い長いCNT [1111] [1111]。 構造体ノード{ 長い長いX、Y、W。 } V [1111]。 ブールCMP(ノードA、ノードB){ IF(AX == BX){ 戻りAY <によって、 }他{ 戻りAX <BX。 } } int型のmain(){ CIN >> T。 一方、(T - ){ memsetの(S、0、はsizeof(S))。 memset(CNT、0、はsizeof(CNT))。 scanf関数( "%D%D%D"、&M、&N&K)。 BOOL TMP = 0。 {(;私は= Kを<I ++が長い長いI = 1)のため のscanf( "%D%D%D"、&V [i]は.X、&V [i]は.Y、&V [i]は.W)。 (![V [i]を.X] [V [i]のCNT場合。 S [V [i]は.X] [V [i]は.Y] = V [i]は.W。 CNT [V [i]は.X] [Vの[I] .Y] = 1。 }他{ IF(S [V [i]は.X] [V [i]は.Y] = V [i]は.W!){ TMP = 1。 } } } ソート(V + 1、V + K + 1、CMP)。 ブールFG = 0。 {(; <= K ++長い長= 1)の ための(長い長B = A + 1、B <= K; B ++){ ; C <= K、C ++(長い長いC = B + 1のために){ IF(V [A] .X == V [B] .X && V [A] .Y == V [C] .Y){ 長い長いXX = V [C] .X。 長い長いYY = V [B] .Y。 IF(CNT [XX] [YY]){ IF((V [A] .W + V [B] .W + V [C] .W + S [XX] [YY])%2!= 0){ FG = 1。 ブレーク; } } } } } } (!FG && TMP){もし プット( "はい")。 }他{ プット( "いいえ"); } } 0を返します。 }
グラフ理論:
#include <ビット/ STDC ++ H> 名前空間STDを使用して、 typedefの長い長いLL。 LLのT、M、N、K。 [2100012]にLLヘッド[2100012]は、、、ヴァル[2100012]、LENを[2100012]を事前。 LL DIS [2100012]、NXT [2100012]。 VISブール[2100012]。 ボイドインサート(LL U、LLをV、W LL){ [++ LEN]へ= V。 ヴァル[lenは、Wが=。 プレ[LEN =頭部[U]。 ヘッド[U] = LEN。 } ブールXY(){ キュー<LL> PQ。 memset(DIS、0x3f3f3f3f、はsizeof(DIS))。 memsetの(VIS、0、はsizeof(VIS))。 memset(NXT、0、はsizeof(NXT))。 DIS [0] = 0; VIS [0] = 1。 pq.push(0)。 (!pq.empty()){中 )(今= pq.frontっ。 pq.pop(); {(I =プレ[I]; iがLL I =ヘッド[今])のために NEX LL = [I]であり; {IF([今] +ヴァル[I] DIS [NEX]> DIS) DIS [NEX = DIS [今] +ヴァル[I]。 NXT [NEX = NXT [今] +1。 (NXT [NEX]> = M + N + 1){場合に falseを返します。 } (!VIS [NEX]){もし VIS [NEX] = TRUE; pq.push(NEX)。 } } } VIS [今] = FALSE; } trueを返します。 } int型のmain(){ scanf関数( "%のLLD"、&T)。 { - (T)一方 、scanf関数( "%LLD%LLD%LLD"、&M、&N&K) memsetの(頭、0、はsizeof(ヘッド))。 memset(0、に、はsizeof()へ)。 memsetの(前、0、はsizeof(PRE))。 LEN = 0; 用(LL I = 1; I <= M + N; iは++){ (iは0、0)を挿入。 } 以下のために(LL i = 1; iが= Kを<; iは++){ LL X、Y、C。 scanf関数( "%LLD%LLD%LLD"、およびX&Y、&C)。 (X、Y + M、c)を挿入します。 (Y + M、X、-c)を挿入します。 } IF(XY()){ プット( "はい")。 }他{ プット(「いいえ」)。 } } 0を返します。 }