時間限制: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...