zoukankan      html  css  js  c++  java
  • POJ 2502 最短路

    http://poj.org/problem?id=2502

    同一条地铁线上的站点相邻点间按照v2建边,然后所有点之间按照v1更新建边,所有的边都是双向边,both directions。

    然后直接跑dij就好了,防止因为重复的站点多建了同样的点,把上限开到了500,AC。

    一个小bug是因为数组开了500,然后初始化时访问了500导致越界,,,把其他位置的地址更改了检查了半天,衰,以后还是多开几十好点。

     1 #include<iostream>
     2 #include<cstdio>
     3 #include<queue>
     4 #include<cmath>
     5 #include<cstring>
     6 using namespace std;
     7 #define inf 999999999
     8 double e[500][500];
     9 struct node
    10 {
    11     int x,y;
    12 }P[500];
    13 double dis(node A,node B)
    14 {
    15     double d1=(A.x-B.x)*(A.x-B.x),d2=(A.y-B.y)*(A.y-B.y);
    16     return sqrt(d1+d2);
    17 }
    18 double dij(int N)
    19 {
    20  double d[505];
    21  bool vis[505];
    22  memset(vis,0,sizeof(vis));
    23  for(int i=1;i<=N;++i) d[i]=inf;
    24  d[1]=0;
    25  for(int i=1;i<=N;++i)
    26  {
    27      int u;
    28      double minv=inf;
    29      for(int j=1;j<=N;++j) if(!vis[j]&&d[j]<minv) minv=d[u=j];
    30      vis[u]=1;
    31      for(int j=1;j<=N;++j)
    32         if(!vis[j]&&d[j]>d[u]+e[u][j])
    33         d[j]=d[u]+e[u][j];
    34  }
    35  return d[2];
    36 }
    37 int main()
    38 {
    39     freopen("in.txt","r",stdin);
    40     int N,M,i,j,k;
    41     double v1=10000.0/60;
    42     double v2=40000.0/60;
    43     while(cin>>P[1].x>>P[1].y>>P[2].x>>P[2].y){
    44         int p=2,l=3,a,b;
    45        for(i=1;i<500;++i)
    46             for(j=1;j<500;++j)
    47         e[i][j]=(i==j?0:inf);
    48         while(cin>>a>>b){
    49             if(a==-1&&b==-1) {l=p+1;continue;}
    50             ++p;
    51             P[p].x=a;
    52             P[p].y=b;
    53             if(p>l) e[p-1][p]=e[p][p-1]=min(e[p][p-1],dis(P[p],P[p-1])/v2);
    54         }
    55 
    56 
    57         for(i=1;i<=p;++i)
    58             for(j=i+1;j<=p;++j)
    59                  e[i][j]=e[j][i]=min(e[i][j],dis(P[i],P[j])/v1);
    60         printf("%.0f
    ",dij(p));
    61     }
    62     return 0;
    63 }
  • 相关阅读:
    字符数组(判断字符串大小)
    http请求文件流
    webservice接口调用
    面试基础-线程(一)
    面试基础-redis(二)
    面试基础-redis(一)
    面试基础--JVM
    【转】支付系统
    springcloud搭建高可用注册中心的时候注册中心在unavailable-replicas中的问题
    springboot+javafx所有依赖一起打包
  • 原文地址:https://www.cnblogs.com/zzqc/p/7364765.html
Copyright © 2011-2022 走看看