20分求调
  • 板块P2078 朋友
  • 楼主_zsy_
  • 当前回复0
  • 已保存回复0
  • 发布时间2024/3/24 15:18
  • 上次更新2024/3/24 15:19:39
查看原帖
20分求调
1264271
_zsy_楼主2024/3/24 15:18

为什么注释部分的代码会使程序运行出错

#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;
}
2024/3/24 15:18
加载中...