标签:
出数据时总会用到。。。自己yy了一个写法不知道肿么样。。。QAQ,而且节点无法确定只是近似值QAQ
1 #include<iostream> 2 #include<cstdio> 3 #include<cmath> 4 #include<algorithm> 5 #include<ctime> 6 using namespace std; 7 const int maxn=100000+10; 8 struct Tedge{int x,y,next;}adj[maxn*2];int ms=0,fch[maxn]; 9 void AddEdge(int u,int v){adj[++ms]=(Tedge){u,v,fch[u]};fch[u]=ms;return;} 10 int f[maxn][2]; 11 inline int read(){ 12 int x=0,sig=1;char ch=getchar(); 13 while(!isdigit(ch)){if(ch==‘-‘) sig=-1;ch=getchar();} 14 while(isdigit(ch)) x=10*x+ch-‘0‘,ch=getchar(); 15 return x*sig; 16 } 17 inline void write(int x){ 18 if(x==0){putchar(‘0‘);return;}if(x<0) putchar(‘-‘),x=-x; 19 int len=0,buf[15];while(x) buf[len++]=x%10,x/=10; 20 for(int i=len-1;i>=0;i--) putchar(buf[i]+‘0‘);return; 21 } 22 int n,tot=1; 23 void make_tree(int u,int num){ 24 if(num==1) {;return;} 25 if(num==0) {tot--;return;} 26 int tp=rand()%3+1; 27 if(tp>=num) tp=2; 28 int all=num,odd=num/tp,i; 29 for(i=1;i<tp;i++){ 30 AddEdge(u,++tot); 31 printf("%d->%d\n",u,tot); 32 all-=odd; 33 make_tree(tot,odd); 34 } 35 if(i<=tp){ 36 AddEdge(u,++tot); 37 printf("%d->%d\n",u,tot); 38 make_tree(tot,all); 39 } 40 return; 41 } 42 void make(int n){ 43 srand(time(0)); 44 make_tree(1,n/2); 45 } 46 void init(){ 47 make(6); 48 return; 49 } 50 void work(){ 51 return; 52 } 53 void print(){ 54 return; 55 } 56 int main(){ 57 init();work();print();return 0; 58 }
标签:
原文地址:http://www.cnblogs.com/chxer/p/4507908.html