跑数据模板
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; }