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

附上CE程序

Posted by allen4053040allen at 2010-06-08 11:01:39 on Problem 2253
In Reply To:提交一个CE 这个是什么意思 高手帮帮忙 Posted by:allen4053040allen at 2010-06-08 10:49:47
#include<iostream>
#include<cmath>

using namespace std;
 
#define MAX 202
#define INF 10000000
#define max(a, b) a > b ? a : b

struct P
{
	double x, y;
}; P point[MAX];

double G[MAX][MAX];

double distance(P e1, P e2)
{
	return sqrt((e1.x - e2.x) * (e1.x - e2.x) + (e1.y - e2.y) * (e1.y - e2.y));
}

double Dij(int n,int s,int t)
{
	int i,j,w,mark[MAX];
	double minc,d[MAX];
	for (i=1;i<=n;i++) mark[i]=0;
	for (i=1;i<=n;i++)
		d[i]=G[s][i];
	mark[s]=1;
	d[s]=0;
	for (i=2;i<=n;i++)
	{
		minc=INF;
		w=0;
		for (j=1;j<=n;j++)
			if ((mark[j]==0)&&(minc>=d[j])) {
				minc=d[j];
				w=j;
			}
		mark[w]=1;
		for (j=1;j<=n;j++)
			if ((mark[j]==0)&&(G[w][j]!=INF)&&(d[j]>d[w] && d[j]>G[w][j]))
				d[j]=max(d[w],G[w][j]);
	}
	return d[t];
}

int main()
{
	int n;
	int i, j;
	int gg = 0;
	while(scanf("%d", &n) && n) {
		for(i = 1; i <= n; i ++)
			for(j = 1; j <= i; j ++)
				if(i == j)
					G[i][j] = 0;
				else
					G[i][j] = G[j][i] = INF;
		for(i = 1; i <= n; i ++)
			scanf("%lf%lf", &point[i].x, &point[i].y);
		for(i = 1; i <= n; i ++)
			for(j = 1; j < i; j ++)
				G[i][j] = G[j][i] = distance(point[i], point[j]);

		printf("Scenario #%d\nFrog Distance = ", ++ gg);
		printf("%.3lf\n\n", Dij(n, 1, 2));
	}

	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