51nod1515 明辨是非

2022-05-31 04:42:11 字數 994 閱讀 7542

給\(n\)組操作,每組操作形式為\(x\;y\;p\).

當\(p=1\)時,如果第\(x\)變數和第\(y\)個變數可以相等,則輸出\(yes\),並限制他們相等;否則輸出\(no\),並忽略此次操作.

當\(p=0\)時,如果第\(x\)變數和第\(y\)個變數可以不相等,則輸出\(yes\),並限制他們不相等;否則輸出\(no\),並忽略此次操作.

輸入乙個數\(n\)表示操作的次數.接下來\(n\)行每行三個數\(x,y,p\).

對於\(n\)行操作,分別輸出\(n\)行\(yes\)或者\(no\).

3

1 2 1

1 3 1

2 3 0

yes

yesno

\(n\;\leq\;10^5,x,y\;\leq\;10^8,p=0\;or\;1\).

離散化所有的變數.

可以用並查集維護相等的關係,\(set\)維護不等的關係.

當\(p=1\)時,如果\(x,y\)都不在對方的\(set\)中,則可行,按\(set\)大小合併它們的父親和\(set\);

當\(p=0\)時,如果\(f[x]\not=f[y]\),把\(f[x],f[y]\)分別插入對方的\(set\)中.

#include#include#include#include#include#include#include#include#include#include#include#define n 200005

using namespace std;

int a[n],f[n],x[n],y[n],p[n],n,m;

sets[n];

set::iterator l;

inline int gf(int k)

inline int search(int k)

s[j].clear();}}

}}int main()

51Nod 1515 明辨是非

給n組操作,每組操作形式為x y p。當p為1時,如果第x變數和第y個變數可以相等,則輸出yes,並限制他們相等 否則輸出no,並忽略此次操作。當p為0時,如果第x變數和第y個變數可以不相等,則輸出yes,並限制他們不相等 否則輸出no,並忽略此次操作。這是一道很經典的題目。如果只有強制相同集合的話...

51nod1515明辨是非

1515 明辨是非 基準時間限制 1 秒 空間限制 131072 kb 分值 160 難度 6級 給n組操作,每組操作形式為x y p。當p為1時,如果第x變數和第y個變數可以相等,則輸出yes,並限制他們相等 否則輸出no,並忽略此次操作。當p為0時,如果第x變數和第y個變數可以不相等,則輸出ye...

51nod 1515 明辨是非

給n組操作,每組操作形式為x y p。當p為1時,如果第x變數和第y個變數可以相等,則輸出yes,並限制他們相等 否則輸出no,並忽略此次操作。當p為0時,如果第x變數和第y個變數可以不相等,則輸出yes,並限制他們不相等 否則輸出no,並忽略此次操作。輸入乙個數n表示操作的次數 n 1 10 5 ...