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

为什么在这里AC,然后在ZOJ提交会出现Segmentation Fault 郁闷了!

Posted by Sunde at 2010-03-08 16:39:29 on Problem 2502 and last updated at 2010-03-08 16:40:37
#include <cstdio>
#include <cmath>

#define MAXN 1000

const double inf = 1e99;
using namespace std;

double g[MAXN][MAXN],x[MAXN],y[MAXN],d[MAXN];
bool final[MAXN];
int n;
int main()
{
	int i,j,v;
	double dis,min;
	freopen("c:\\in.txt","r",stdin);

	for (i=0;i<MAXN;i++)
		for (j=0;j<MAXN;j++)
			g[i][j] = (i==j?0.0:inf);

	scanf("%lf%lf%lf%lf",&x[0],&y[0],&x[1],&y[1]);
	n=2;
	while(scanf("%lf%lf",&x[n],&y[n])!=EOF)
	{
		n++;
		while(true)
		{
			scanf("%lf%lf",&x[n],&y[n]);
			if (x[n]==-1&&y[n]==-1)
				break;
			g[n-1][n] = g[n][n-1] = sqrt((x[n]-x[n-1])*(x[n]-x[n-1])+(y[n]-y[n-1])*(y[n]-y[n-1]))/40000.0*60.0;
			n++;
		}
	}
	//计算需要步行的点对
	for (i=0;i<n;i++)
		for (j=i+1;j<n;j++)
		{
			dis = sqrt((x[i]-x[j])*(x[i]-x[j])+(y[i]-y[j])*(y[i]-y[j]))/10000.0*60.0;
			if (dis<g[i][j])
				g[i][j]= g[j][i] = dis;
		}
	//Dijkstra
	for (i=0;i<n;i++)
	{
		final[i] = false;
		d[i] = g[0][i];
	}

	final[0] = true;
	v = 0;
	for (i=1;i<n;i++)
	{
		min = inf;
		for (j=0;j<n;j++)
			if (!final[j]&&d[j]<min)
			{
				v = j;
				min = d[j];
			}
		final[v] = true;
		for (j=0;j<n;j++)
			if (!final[j]&&(min+g[v][j]<d[j]))
				d[j] = min+g[v][j];
	}
	printf("%d\n",int(d[1]+0.5));
        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