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 |
Re:为什么WA啊 大牛给看看In Reply To:为什么WA啊 大牛给看看 Posted by:xia192041 at 2006-11-23 14:50:34 > #include<stdio.h> > #include<stdlib.h> > #include<string.h> > > struct In > { > int x; > int y; > }s[50001]; > > int flag[50001],num[50001],t; > int search(int n) > { > int max,sum,i,temp; > max=0; > sum=0; > for(i=0;i<t;i++) > { > if(s[i].x==n) > { > temp=search(s[i].y); > if(temp>max) max=temp; > sum+=temp; > } > if(s[i].x>n) break; > } > flag[n]=max; > num[n]=sum; > return sum+1; > } > > int cmp( const void *a , const void *b) > { > struct In *c = (In *)a; > struct In *d = (In *)b; > if(c->x != d->x) return c->x - d->x; > else return c->y - d->y; > } > > int main() > { > int i,j,pp,min; > > while(scanf("%d",&t)!=EOF) > { > s[0].x=0; > s[0].y=1; > for(i=1;i<t;i++) > scanf("%d%d",&s[i].x,&s[i].y); > qsort(s,t,sizeof(s[0]),cmp); > memset(flag,0,sizeof(flag)); > search(0); > > for(i=1;i<=t;i++) > if(flag[i]<(t-1-num[i])) flag[i]=(t-1-num[i]); > > min=flag[1]; > for(i=2;i<=t;i++) > { > if(min>flag[i]) min=flag[i]; > } > > pp=0; > for(i=1;i<=t;i++) > { > if(min==flag[i]) > { > if(pp==0) > { > printf("%d",i); > pp=1; > } > else printf(" %d",i); > } > } > printf("\n"); > } > return 0; > } > 其实我很好奇, 为什么这个程序不TLE呢 Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator