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 |
怎么没有人理我啊!WA+CE得哭了,55555555555555555!In Reply To:刚学了种叫"容器"的东西,拿来写这个题,一直WA,哪位好心人能帮我看一下啊 Posted by:lxhgww at 2006-12-09 20:36:00 > #include <stdio.h> > #include <vector> > > using namespace std; > > const long MAX_N=100001; > const long long inf=1000001LL; > > bool arr[MAX_N]; > vector<long> conn[MAX_N]; > long long zz[MAX_N]; > long n; > long long nowMin,sum; > > long long search(long w) > { > long long tot=zz[w]; > long long maxBlock=inf; > arr[w]=true; > for (vector<long>::iterator i=conn[w].begin();i!=conn[w].end();i++) > if (!arr[*i]) > { > long long tmp=search(*i); > if (tmp>=sum-tmp) > { > if (maxBlock>2*tmp-sum) maxBlock=2*tmp-sum; > } > else > { > if (maxBlock>sum-2*tmp) maxBlock=sum-2*tmp; > } > tot+=tmp; > } > if (tot>=sum-tot) > { > if (maxBlock>2*tot-sum) maxBlock=2*tot-sum; > } > else > { > if (maxBlock>sum-2*tot) maxBlock=sum-2*tot; > } > if (maxBlock<nowMin) nowMin=maxBlock; > return tot; > } > > int main() > { > long i,m,a,b,pp; > pp=1; > scanf("%ld%ld",&n,&m); > while (!(n==0&&m==0)) > { > for (i=1;i<=n;i++) > conn[i].clear(); > sum=0; > for (i=1;i<=n;i++) > { > scanf("%I64d",&zz[i]); > sum=sum+zz[i]; > } > for (i=1;i<=m;i++) > { > scanf("%ld%ld",&a,&b); > conn[a].push_back(b); > conn[b].push_back(a); > } > memset(arr,false,sizeof(arr)); > nowMin=inf; > search(1); > printf("Case %ld: %I64d\n",pp,nowMin); > pp++; > scanf("%ld%ld",&n,&m); > } > return 0; > } Followed by:
Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator