提供数据生成器
查看原帖
提供数据生成器
383079
Acc_Robin楼主2021/10/6 17:39
#include<bits/stdc++.h>
using namespace std;
const int N=1e5+9;
int f[N];
int gf(int x){
 return x==f[x]?x:f[x]=gf(f[x]);
}
map<pair<int,int>,int>mp;
int main(){
 int N=1e4,M=1e5,Q=1e5,n,m,q,x,y,i;
 unsigned sed=chrono::system_clock::now().time_since_epoch().count();
 mt19937 sd(sed);
 uniform_int_distribution<int>rdn(3,N);
 n=rdn(sd);
 uniform_int_distribution<int>rdm(n-1,min(1ll*M,1ll*n*(n-1)/2));
 uniform_int_distribution<int>rdq(1,Q);
 m=rdm(sd),q=rdq(sd),iota(f,f+n+1,0);
 cout<<n<<' '<<m<<'\n';
 uniform_int_distribution<int>rdp(1,n);
 uniform_int_distribution<int>rdw(3,n);
 for(i=1;i<n;++i){
  for(x=rdp(sd),y=rdp(sd);gf(x)==gf(y);x=rdp(sd),y=rdp(sd));
  f[gf(x)]=gf(y),cout<<x<<' '<<y<<'\n',mp[minmax(x,y)]=1;
 }
 cerr<<"F "<<n<<' '<<m<<'\n';
 for(m-=n-1;m--;){
  for(x=rdp(sd),y=rdp(sd);x==y || mp[minmax(x,y)];x=rdp(sd),y=rdp(sd));
  cout<<x<<' '<<y<<'\n',mp[minmax(x,y)]=1;
 }
 for(cout<<q<<'\n';q--;){
  for(x=rdp(sd),y=rdp(sd);x==y;x=rdp(sd),y=rdp(sd));
  cout<<x<<' '<<y<<' '<<rdw(sd)<<'\n';
 }
}
2021/10/6 17:39
加载中...