51nod 1515 明辨是非 啟發式合併

2022-03-31 15:20:57 字數 1002 閱讀 9506

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

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

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

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

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

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

31 2 1

1 3 1

2 3 0

yesyes

no相同的,就直接並查集去維護就好了

不相同的,就set啟發式合併去莽一波就好了

#includeusing namespace std;

const int maxn = 2e5+7;

int n,m,cnt,x,y,op,fa[maxn];

unordered_maph;

sets[maxn];

set::iterator it;

inline int read()

while(ch>='0'&&ch<='9')

return x*f;

}int fi(int x)

void set_uni(int x,int y)

s[y].clear();

fa[y]=x;

}else

s[x].clear();

fa[x]=y;

}}int getid(int x)

void uni(int x,int y)

printf("yes\n");

set_uni(x,y);

}void spl(int x,int y)

printf("yes\n");

s[x].insert(y);

s[y].insert(x);

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