Online Judge | Problem Set | Authors | Online Contests | User | ||||||
---|---|---|---|---|---|---|---|---|---|---|
Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest |
很简单的算法,怎么会Runtime Error呢(c/c++)本地测试基本数据都没问题啊,是溢出了吗,提交环境有能分配多大的数组阿 #include<stdio.h> #include<malloc.h> struct node{ long length,power; /*距离父节点长度,层值*/ struct node *next; }*Cur,*Tree,*tr1,*tr2; long iNodeCount=0; long sum,number,t1,t2,t3,n,i,j,gk; int main(){ while(scanf("%d%d",&n,&gk) && n){ Tree=(struct node *)malloc(sizeof(struct node)*(n+2)); (Tree+1)->power=1; (Tree+1)->length=0; (Tree+1)->next=NULL; for(i=1;i<n;i++){ scanf("%ld%ld%ld",&t1,&t2,&t3); Cur=Tree+t2; Cur->next=Tree+t1; Cur->power=Cur->next->power+1; Cur->length=t3; } number=0; for(i=1;i<=n;i++){ for(j=i+1;j<=n;j++){ tr1=Tree+i; tr2=Tree+j; sum=0; { /*先判断要查找的两个节点的层值*/ while(tr1->power > tr2->power) { sum+=tr1->length; tr1=tr1->next; } while(tr1->power < tr2->power) { sum+=tr2->length; tr2=tr2->next; } while(tr1!=tr2 && tr1!=NULL && tr2!=NULL){ sum+=tr1->length+tr2->length; tr1=tr1->next; tr2=tr2->next; } } if(sum<=gk) number++; } } printf("%ld\n",number); free(Tree); } return 0; } Followed by:
Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator