| ||||||||||
| 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啊,我实在是看不出来了!#include <cstdio>
#include <cmath>
const int maxn=110,maxm=60,oo=2134000000;
int n,s[maxn];
int x[maxn][maxm],y[maxn][maxm];
long double dp[maxn][maxm];
long double Distance(int x1,int y1,int x2,int y2)
{
return sqrt( (x1-x2) * (x1-x2)+(y1-y2) * (y1-y2) );
}
int main()
{
freopen("p2173.in","r",stdin);
freopen("p2173.out","w",stdout);
scanf("%d",&n);
for (int i=2;i<=n;i++)
for (int j=1;j<=maxm;j++)
dp[i][j]=oo;
for (int i=1;i<=n;i++)
{
scanf("%d",&s[i]);
for (int j=1;j<=s[i];j++)
scanf("%d%d",&x[i][j],&y[i][j]);
}
for (int i=2;i<=n;i++)
{
for (int j=1;j<=s[i];j++)
for (int k=1;k<=s[i-1];k++)
if (dp[i-1][k]+Distance(x[i-1][k],y[i-1][k],x[i][j],y[i][j])<dp[i][j])
dp[i][j]=dp[i-1][k]+Distance(x[i-1][k],y[i-1][k],x[i][j],y[i][j]);
}
long double min=oo;
for (int i=1;i<=s[1];i++)
for (int j=1;j<=s[n];j++)
if (dp[n][j]+Distance(x[1][i],y[1][i],x[n][j],y[n][j])<min)
min=dp[n][j]+Distance(x[1][i],y[1][i],x[n][j],y[n][j]);
min=min * 100;
int ans=int(min);
printf("%d\n",ans);
return 0;
}
Followed by:
Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator