| ||||||||||
| 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 | |||||||||
Re:为什么在这里AC,然后在ZOJ提交会出现Segmentation Fault 郁闷了!In Reply To:为什么在这里AC,然后在ZOJ提交会出现Segmentation Fault 郁闷了! Posted by:Sunde at 2010-03-08 16:39:29 > #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: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator