求助造数据
  • 板块学术版
  • 楼主Lynkcat
  • 当前回复5
  • 已保存回复5
  • 发布时间2020/8/2 10:24
  • 上次更新2023/11/6 21:32:08
查看原帖
求助造数据
120911
Lynkcat楼主2020/8/2 10:24

建一棵树的代码,跑到一半会突然卡出,求查错。

#include<bits/stdc++.h>
#define N 500005
using namespace std;
int n,q,x,y,z,f[N];
int gf(int k)
{
    if (f[k]==k) return k;
	return f[k]=gf(f[k]);
}
void merge(int x,int y)
{
    f[x]=y;
}
/*signed main()
{
	srand((long long)(time(0)*100000000000000)); 
	n=rand()%5+5;
	q=rand()%5+5;
	cout<<n<<" "<<q<<endl;
	for (int i=1;i<=n;i++)
	{
		cout<<rand()%5+5<<" ";
		f[i]=i;
	}
	cout<<endl;
	for (int i=1;i<n;i++)
	{
		x=rand()%n+1;
		y=rand()%n+1; 
		while (gf(x)==gf(y))
		  x=rand()%n+1,y=rand()%n+1;
		cout<<x<<" "<<y<<endl;
		f[gf(x)]=gf(y);
	}
	for (int i=1;i<=q;i++)
	{
		x=rand()%n+1;y=rand()%n+1;z=rand()%n+1;
		cout<<x<<" "<<y<<" "<<z<<endl;
	}
}*/
signed main()
{
    srand((long long)(time(0)*100000000000000)); 
	n=rand()%10000+90000;
	q=rand()%10000+90000;
	cout<<n<<" "<<q<<endl;
	for (int i=1;i<=n;i++)
	{
		cout<<rand()%10000+90000<<" ";
		f[i]=i;
	}
	cout<<endl;
	for (int i=1;i<n;i++)
	{
		x=rand()%n+1;
		y=rand()%n+1; 
		while (gf(x)==gf(y))
		  x=rand()%n+1,y=rand()%n+1;
		cout<<x<<" "<<y<<endl;
		f[gf(x)]=gf(y);
	}
	for (int i=1;i<=q;i++)
	{
		x=rand()%n+1;y=rand()%10+90;z=rand()%n+1;
		cout<<x<<" "<<y<<" "<<z<<endl;
	}
}
2020/8/2 10:24
加载中...