为什么会memory limit error?
代码:
#include<cstdio>
using namespace std;
int ans=0;
int f[300005],n,k;
inline int read()
{
int x=0;
char ch=getchar();
while(ch<'0'||ch>'9')
{
ch=getchar();
}
while(ch>='0'&&ch<='9')
{
x=x*10+int(ch-'0');
ch=getchar();
}
return x;
}
int find(int a)
{
if(a==f[a]) return a;
return f[a]=find(f[a]);
}
int unite(int x,int y)
{
int r1=f[x],r2=f[y];
f[r1]=r2;
}
int main()
{
int x,y,t;
n=read();k=read();
for(int i=1;i<=n*3;++i) f[i]=i;
for(int i=1;i<=k;++i)
{
t=read();x=read();y=read();
if(x>n||y>n)
{
ans++;
continue;
}
if(t==1)
{
if(find(x+n)==find(y)||find(x+n*2)==find(y)){
ans++;
continue;
}
unite(x,y);
unite(x+n,y+n);
unite(x+n*2,y+n*2);
}
else if(t==2)
{
if(x==y)
{
ans++;
continue;
}
if(find(x)==find(y)||find(x+n*2)==find(y))
{
ans++;
continue;
}
unite(x,y+n*2);
unite(x+n,y);
unite(x+n*2,y*2);
}
}
printf("%d\n",ans);
return 0;
}
希望有大佬能指出我的错误!