数据生成器
查看原帖
数据生成器
331947
hegm楼主2022/11/10 10:47

蒟蒻挑了半天,手写了下数据生成器,如果你挑不出来可以用下。

#include<bits/stdc++.h>
using namespace std;
int read()
{
	int x=0,f=1;char ch=getchar();
	while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();}
	while(ch>='0'&&ch<='9'){x=x*10+ch-'0';ch=getchar();}
	return x*f;
}
int f[100005],n,m,size[100005]; 
int randm(int x){return ((rand()%x)*(rand()%x))%x+1;}
int find(int now)
{
	if(f[now]==now)return now;
	return f[now]=find(f[now]);
}
const int W=10,N=7,Q=7,SIZE=6;
//W为边权最大值,N为国家数,Q为询问数,SIZE为国家城市数。 
int main()
{
	srand(time(0));
	n=N;
	cout<<n<<"\n";
	for(int i=1;i<=n;i++)size[i]=randm(SIZE)+2;
	for(int i=1,cnt,u,v,w;i<=n;i++)
	{
		cout<<size[i]<<"\n";
		for(int j=0;j<=size[i];j++)f[j]=j;
		cnt=0;
		while(cnt!=size[i]-1)
		{
			u=randm(size[i])-1;
			v=randm(size[i])-1;
			w=randm(W);
			u=find(u);v=find(v);
			if(u!=v)
			{
				cout<<u<<" "<<v<<" "<<w<<"\n";
				f[u]=v;
				cnt++;
			}
		}
	}
	int q=Q;
	int s1,e1,s0,e0;
	cout<<q<<"\n";
	while(q--)
	{
		s0=randm(n);
		e0=randm(n);
		s1=randm(size[s0])-1;
		e1=randm(size[e0])-1;
		cout<<s0-1<<" "<<s1<<" "<<e0-1<<" "<<e1<<"\n";
	}
	return 0;
}
2022/11/10 10:47
加载中...