跑数据模板

makedata

# include<bits/stdc++.h>

using namespace std;

const bool flag=false; //默认无权树  

const int N_[30]={0,10,10,100,1000,10,1000,10,1000,50,1000,10000,50000,100000,100000,100000,100000,100000,100000,100000,100000};
const int M_[30]={0,10,10,20,20,20,100,100,100,500,500,100000,100000,100000,100000,100000,100000,100000,100000,100000,100000};
bool f[110000]={};
int Rint()
{
  return  (rand()|(long long)rand()<<15)%1000000;
}
//data_maker
int ans_[129],temp=0; 


int n;
void MKNtree(int id)
{

	for (int i=2;i<=n;i++)
	 if (!flag) cout<<i<<' '<<Rint()%(i-1)+1<<endl;
     else cout<<i<<' '<<Rint()%(i-1)+1<<' '<<Rint()%M_[id]<<endl;
}

struct  node
{
	int id,num;
	
} Num[1001000];
bool mycmp(node x, node y)
{
	return x.num<y.num;
}
void Mpermu(int n)
{
    memset(Num,0,sizeof(Num));
	for (int i=1;i<=n;i++)  Num[i].id=i,Num[i].num=Rint();
    sort(Num+1,Num+n+1,mycmp);
}
void Mline(int id)
{

	memset(Num,0,sizeof(Num));
	Mpermu(n);
	for (int i=1;i<n;i++)
	if (!flag)	cout<<Num[i].id<<' '<<Num[i+1].id<<endl;
	
	else  cout<<Num[i].id<<' '<<Num[i+1].id<<' '<<Rint()%M_[id]<<endl;	
	
}
void Mchry(int id)
{

	int root=Rint()%n+1;
	for (int i=1;i<=n;i++)
	  if (i!=root)
			if (!flag)  cout<<i<<' '<<root<<endl;  
		    else    cout<<i<<' '<<root<<' '<<Rint()%M_[id]<<endl;  
}
void Mtara(int id)
{

	int T=n/2;
	Mpermu(T);
	for (int i=1;i<T;i++)
	if (!flag)	cout<<Num[i].id<<' '<<Num[i+1].id<<endl;	
	else  cout<<Num[i].id<<' '<<Num[i+1].id<<' '<<Rint()%M_[id]<<endl;	
   int  root=Num[1].id; 	
	for (int i=T+1;i<=n;i++)
			if (!flag)  cout<<i<<' '<<root<<endl;  
		    else    cout<<i<<' '<<root<<' '<<Rint()%M_[id]<<endl;  		
	
}
void work(int id)
{
	n=N_[id];
	cout<<n<<endl;
	cout<<Rint()%n+1;
	for (int i=2;i<=n;i++) cout<<' '<<Rint()%n+1; 
	cout<<endl;
	if( (id<=4) ||(id >=11)&& id<=14)  MKNtree(id);  
	//涓€鑸殑鏍?
	if( (id>=5 && id<=6) ||(id >=15)&& id<=16) Mline(id);
	//閾?
    if( (id>=7 && id<=8) ||(id >=17)&& id<=18) Mchry(id);
	//鑿婅姳鍥?
	 if( (id>=9 && id<=10) ||(id >=19))  Mtara(id);
	 //钂插叕鑻?
}
int a[110];


char order[110];
int main()
{
   	 srand( (int)time( NULL ) );  
		for(int _index=1;_index<=20;_index++)
		{
			sprintf(order,"tree%d.in",_index);
			freopen(order,"w",stdout);
			work(_index);
			fclose(stdout);

		}	
	return 0;
}

  

posted @ 2020-08-07 09:36  mybing  阅读(175)  评论(0编辑  收藏  举报