为什么注释部分的代码会使程序运行出错
#include<bits/stdc++.h>
using namespace std;
int n,p,m,q,x,y,a[10005],b[10005];
int find1(int j)
{
if(a[j]!=j)j=find1(a[j]);
return j;
}
int find2(int k)
{
if(b[k]!=k)k=find2(b[k]);
return k;
}
int main()
{
scanf("%d%d%d%d",&n,&p,&m,&q);
int cnt1=0,cnt2=0;
for(int i=1;i<=n;i++)
{
a[i]=i;
}
// for(int j=1;j<=m;j++)
// {
// b[j]=j;
// }
for(int i=0;i<p;i++)
{
scanf("%d%d",&x,&y);
int fx=find1(a[x]);
int fy=find1(a[y]);
if(fx!=fy)a[fx]=a[fy];
}
for(int i=0;i<q;i++)
{
scanf("%d%d",&x,&y);
int fx=find2(b[-x]);
int fy=find2(b[-y]);
if(fx!=fy)b[fx]=b[fy];
}
for(int i=1;i<=n;i++)a[i]=find1(a[i]);
// for(int i=1;i<=m;i++)a2[i]=find2(a2[i]);
x=a[1],y=b[1];
for(int i=1;i<=n;i++)if(a[i]==x)cnt1++;
// for(int i=1;i<=m;i++)if(b[i]==y)cnt2++;
printf("%d",min(cnt1,cnt2));
return 0;
}