牛客小白月賽24 H 人人都是好朋友

2021-10-05 16:48:42 字數 1585 閱讀 9998

時間限制:c/c++ 2秒,其他語言4秒

空間限制:c/c++ 262144k,其他語言524288k

64bit io format: %lld

題目描述:

牛可樂作為三軍統帥,是要時時刻刻關照著下屬的。

現在牛可樂想要知道自己的手下之間的友好關係,所以他收集了 nn 張紙條,上面寫著三個整數 ai,bi,ci,表示如果 ci為 1,表示手下 ai和手下 bi是朋友,反之則是敵人。

牛可樂想要知道這些資訊有沒有互相矛盾的地方,可是這個問題太難了,只好來問你了

如果 a 與 b 友好,b 又與 c 友好,那麼 a 與 c 也是友好的。

如果兩個人既是友好的又是不友好的則視為相互矛盾的。

牛可樂的手下有 1e9 個。

輸入描述:

輸入第一行給出乙個正整數t,表示測試案例的數量。

接下來每個測試用例,第一行給出乙個正整數n,表示有n個友好關係

接下來每n行給出3個正整數ai,bi,ci,表示手下ai和手下bi之間的友好關係

輸出描述:

每組案例輸出一行,若這些關係沒有矛盾,輸出 "yes」,否則輸出 「no」

示例1輸入

231 2 1

1 3 1

2 3 1

31 2 1

1 3 1

2 3 0

輸出yes

no備註:

1<=t<=10

1<=n<=1e6

1<=a,b<=1e9

c∈對於每組樣例,保證∑n<=1010000

解題思路:

這題資料範圍很大,一般的並查集沒有這麼大的記憶體空間來儲存資料,離散化也不會寫,就借助stl庫中的map作為陣列使用.先把ci為1的所有關係並在一起,然後遍歷ci為0的每隊關係,檢視是否存在衝突即可.

**如下:

#include

using

namespace std;

typedef

long

long ll;

const

int n =

1e6+5;

int n,a[n]

,b[n]

,c[n]

;unordered_map<

int,

int>bin;

inline

intfind

(int a)

inline

void

merge

(int a,

int b)

}int

main()

else

}bool flag=

true

;for

(int i=

0;iif(flag)cout<<

"yes"

"no"

<}return0;

}

牛客小白月賽24 H 人人都是好朋友

題目鏈結 牛可樂作為三軍統帥,是要時時刻刻關照著下屬的。現在牛可樂想要知道自己的手下之間的友好關係,所以他收集了 n 張紙條,上面寫著三個整數 ai,bi,c ia i,b i,c i ai bi ci 表示如果 c ic i ci 為 1,表示手下 a ia i ai 和手下 b ib i bi ...

牛客小白月賽24 題解

牛客小白月賽24 題解 最後還剩一道計算幾何,其實可以ak,但沒必要 b 簽到 include using namespace std const int n 2e5 10 int a n int main printf d n ans return 0 c 還行 includeusing name...

牛客的小白月賽24補題

沒注意負數取模 呀呀呀呀,打腦殼 保證取模後的結果為正數 x mod mod mod 思路1.挨個嘗試肯定超時 2.就是把平方項展開 a2 b2 2ab 每個平方項的出現次數n 1次 每個2ab形式的和 最後一定注意取余為正數 戳我試試看 include include include includ...