51 nod 1515 明辨是非 並查集合並

2022-08-19 08:24:10 字數 2022 閱讀 1669

給n組操作,每組操作形式為x y p。

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

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

input

輸入乙個數n表示操作的次數(n<=1*10^5)

接下來n行每行三個數x,y,p(x,y<=1*10^8,p=0 or 1)

output

對於n行操作,分別輸出n行yes或者no
input示例

3

1 2 1

1 3 1

2 3 0

output示例

yes

yesno

/*

51 nod 1515 明辨是非(並查集合並)

problem:

兩種操作:

x y 1: 如果第x,第y個數可以相同,則輸出yes,並令他們相同. 否則輸出no

x y 0: 如果第x,第y個數可以不相同 ......

solve:

相同可以用並查集來維護. 但是不同則不行, 如果a,b不同, b,c不同.但是a,c可以相同. 開始腦子抽了都用並查集 卒...

先set記錄一下每個數與其不同的數有哪些. 然後判斷兩個數是否不相等時直接進行查詢.並要判斷他們各自所在的並查集

合併的時候再把set處理一下就好. printf一直tl,換成putsac.

hhh-2016/09/04-17:18:40

*/#pragma comment(linker,"/stack:124000000,124000000")

#include #include #include #include #include #include #include #include #include #include #define lson i<<1

#define rson i<<1|1

#define ll long long

#define clr(a,b) memset(a,b,sizeof(a))

#define scanfi(a) scanf("%d",&a)

#define scanfs(a) scanf("%s",a)

#define scanfl(a) scanf("%i64d",&a)

#define scanfd(a) scanf("%lf",&a)

#define key_val ch[ch[root][1]][0]

#define eps 1e-7

#define inf 0x3f3f3f3f3f3f3f3f

using namespace std;

const ll mod = 1000000007;

const int maxn = 200010;

const double pi = acos(-1.0);

struct node

qry[maxn];

int id[maxn];

setq[maxn];

mapmp;

set::iterator it;

int par[maxn];

int fin(int x)

void unio(int x,int y)

par[x] = y;

for(it = q[x].begin(); it != q[x].end(); it++)

}int main()

sort(id,id+cnt);

int total = unique(id,id+cnt)-id;

for(int i = 0; i < total; i++)

mp[id[i]] = i;

// cout << total }

}else}}

if(flag)

puts("no");

else

}else}}

return 0;

}

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 ...