史强 @ 2020-01-10 10:33:51
最近一直在练习并查集
p.s.:各位大佬能推荐点题目么?
压缩前:
#include <bits/stdc++.h>
using namespace std;
struct unionfind
{
int bin[10005];
unionfind()
{
for(int i=1;i<=10002;i++)
{
bin[i]=i;
}
}
int anc(int x)
{
if(bin[x]==x)
return x;
else
return anc(bin[x]);
}//return anc(bin[x]);
void uni(int x,int y)
{
bin[anc(x)]=anc(y);
}
void ask(int x,int y)
{
if(anc(x)==anc(y))
{
cout<<"Y"<<endl;
}
else
{
cout<<"N"<<endl;
}
}
};
unionfind u;
int main(void)
{
int n,m;
int z,x,y;
cin>>n>>m;
while(m--)
{
cin>>z>>x>>y;
if(z==1)u.uni(x,y);
else
if(z==2)u.ask(x,y);
}
return 0;
}
码风与众不同
结果:点我
震惊:与ta一样
于是改了一下
(代码在此不展示,各位大佬应该明白)
评测结果:点我
by zhy137036 @ 2020-01-10 16:46:19
@yurzhang 原来并查集叫“不相交集合”orz
翻译的太。。
by yurzhang @ 2020-01-10 16:48:00
并查集只能处理不相交集合啊,翻译没有问题吧
by 史强 @ 2020-01-12 11:07:56
@水比田昭寿 thanks