并查集代码没问题,MLE应该是数组开大了
by qseer @ 2018-10-29 17:16:17
@[qseer](/space/show?uid=68518) 数组只开了10001;
by Wenchih @ 2018-10-29 17:24:57
你的合并函数...
by 7wwwwth @ 2018-10-29 17:30:12
你的合并孓了
by 多多良假伞 @ 2018-10-29 17:33:52
感觉相当于把整棵树遍历了一遍xx
by 多多良假伞 @ 2018-10-29 17:34:16
一开始我也MLE了
一定是内存过大
我当时128000Kb
正解:
#include<bits/stdc++.h>
using namespace std;
int f[100001];
int n,m;
int x,y,z;
int g(int a)
{
if(a==f[a])
return a;
return f[a]=g(f[a]);
}
void met(int a,int b)
{
f[g(a)]=g(b);
}
void issame(int a,int b)
{
if(g(a)==g(b))
cout<<"Y"<<endl;
else
cout<<"N"<<endl;
}
int main()
{
cin>>n>>m;
for(int i=1;i<=100001;i++)
f[i]=i;
for(int j=1;j<=m;j++)
{
cin>>z>>x>>y;
if(z==1)
{
if(g(x)!=g(y))
met(x,y);
}
else
{
issame(x,y);
}
}
return 0;
}
by daizy @ 2018-10-29 17:34:26
@[daizy](/space/show?uid=113144)
# 希望更丰富的展现?使用Markdown#
## 希望更丰富的展现?使用Markdown##
### 希望更丰富的展现?使用Markdown ###
##### 希望更丰富的展现?使用Markdown ####
###### 希望更丰富的展现?使用Markdown#####
by 霹雳搅屎棍 @ 2018-10-29 17:39:43