蒟蒻挑了半天,手写了下数据生成器,如果你挑不出来可以用下。
#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;
}