51nod 1515 明辨是非 並查集 set

2022-02-27 09:02:21 字數 1787 閱讀 8543

今天cb巨巨突然拿題來問,感覺驚訝又開心,希望他早日**!!堅持學acm!加油!

51nod 1515 明辨是非 [並查集]

1515 明辨是非

基準時間限制:1 秒 空間限制:131072 kb 分值: 160難度:6級演算法題

給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 yes no

#include #include 

#include

#include

#include

#include

#include

#include

#include

#include

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

using

namespace

std;

typedef

long

long

ll;const

int n = 1e5+5

;int

fa[n], r[n];

map

vis;

sets[n];

set:: iterator it;

struct

nodeq[n];

int fin(int

x) void uni(int a, int

b) fa[b] =a;

r[a]++;

}else

fa[a] =b;

r[b]++;

}}int

main()

else q[i].x =vis[x];

if(!vis[y])

else q[i].y =vis[y];

}for(int i = 1; i <= n; ++i)

for(int i = 1; i <= n; ++i)

}for(it = s[y].begin(); it != s[y].end(); it++)

}if(t) puts("no");

*/if(s[x].count(y) || s[y].count(x)) puts("no"

);

else}}

else}}

return0;

}

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