Online JudgeProblem SetAuthorsOnline ContestsUser
Web Board
Home Page
F.A.Qs
Statistical Charts
Problems
Submit Problem
Online Status
Prob.ID:
Register
Update your info
Authors ranklist
Current Contest
Past Contests
Scheduled Contests
Award Contest
User ID:
Password:
  Register

小吗?有人教我在数字后面加个LL数字就变得很大了啊,我又重新写了一个,这次没用inf,还是WA!(代码见内)

Posted by lxhgww at 2006-12-09 22:40:19 on Problem 3140
In Reply To:inf是不是小了点? Posted by:ArXoR at 2006-12-09 21:46:07
#include<stdio.h>
#include<string.h>
#include<vector>

using namespace std;

vector<long> con[100001];
_int64 val[100001];
_int64 sum,min;
long n;
int u[100001];

_int64 search(long x)
{
	_int64 s;
	_int64 z,mm;
	u[x]=1;
	s=val[x];
	mm=min;
	for (vector<long> ::iterator i = con[x].begin(); i != con[x].end(); i++)
		if (!u[*i])
		{
			z=search(*i);
			if (mm>abs(sum-z-z)) mm=abs(sum-z-z);
			s=s+z;
		}
	if (mm>abs(s+s-sum)) mm=abs(s+s-sum);
	if (mm<min) min=mm;
	return s;
}

int main()
{
	long i,p,m;
	long b,c;
	p=1;
	scanf("%ld%ld",&n,&m);
	while (!(n==0&&m==0))
	{
		for (i=1;i<=n;i++)
			con[i].clear();
		sum=0;
		for (i=1;i<=n;i++)
		{
			scanf("%I64d",&val[i]);
			sum=sum+val[i];
		}
		for (i=1;i<=m;i++)
		{
			scanf("%ld%ld",&b,&c);
			con[b].push_back(c);
			con[c].push_back(b);
		}
		min=abs(sum-val[1]-val[1]);
		memset(u,0,sizeof(u));
		search(1);
		printf("Case %ld: %I64d\n",p,min);
		p++;
		scanf("%ld%ld",&n,&m);
	}
	return 0;
}

Followed by:

Post your reply here:
User ID:
Password:
Title:

Content:

Home Page   Go Back  To top


All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator