zoukankan      html  css  js  c++  java
  • HDU 1596 最短路变形

    这道题怎么都是TLE,报警了,先放在这

    http://acm.hdu.edu.cn/showproblem.php?pid=1596

     1 #include <iostream>
     2 #include <iomanip>
     3 using namespace std;
     4 
     5 #define MAXVEX 1001
     6 
     7 double matrix[MAXVEX][MAXVEX];
     8 double D[MAXVEX];
     9 
    10 int n;
    11 
    12 void Dijkstral(int v0)
    13 {
    14           int v,w,k=1;
    15           double max;
    16           int final[MAXVEX];
    17 
    18           for(int i = 1;i<=n;i++)
    19           {
    20                     D[i] = matrix[v0][i];
    21                     final[i] = 0;
    22           }
    23 
    24           final[v0] = 1;
    25 
    26           for(v=1;v<=n;v++)
    27           {
    28                     max = -1;
    29                     for(w=1;w<=n;w++)
    30                     {
    31                               if(D[w]>max && !final[w])
    32                               {
    33                                        max = D[w];
    34                                        k = w;
    35                               }
    36                     }
    37 
    38                     final[k] = 1;
    39 
    40                     for(w=1;w<=n;w++)
    41                     {
    42                               if(max*matrix[k][w]>D[w] && !final[w])
    43                               {
    44                                         D[w]=max*matrix[v][w];
    45                               }
    46                     }
    47           }
    48 
    49 }
    50 
    51 
    52 int main()
    53 {
    54           while(cin>>n)
    55           {
    56                     for(int i = 1;i<=n;i++)
    57                     {
    58                               for(int j = 1;j<=n;j++)
    59                                         cin>>matrix[i][j];
    60                     }
    61 
    62                     int m;
    63                     cin>>m;
    64                     while(m--)
    65                     {
    66                               int a,b;
    67                               cin>>a>>b;
    68 
    69                               Dijkstral(a);
    70 
    71                               if(D[b])
    72                                         cout<<fixed<<setprecision(3)<<D[b]<<endl;
    73                               else
    74                                         cout<<"What a pity!
    ";
    75                     }
    76           }
    77           return 0;
    78 }

    ac了,1482MS

     1 #include <cstdio>
     2 using namespace std;
     3 const int L = 1010;
     4 const int INF = 1<<27;
     5 
     6 double map[L][L];
     7 int vis[L];
     8 double dis[L];
     9 
    10 int n,m;
    11 
    12 void Dijkstra(int s)
    13 {
    14           int i,j,k;
    15           double max;
    16           for(i = 1;i<=n;i++)
    17           {
    18                     dis[i] = map[s][i];
    19                     vis[i] = 0;
    20           }
    21 
    22           vis[s] = 1;
    23           dis[s] = 0;
    24 
    25           for(i = 1;i<=n;i++)
    26           {
    27                     max = 0;
    28                     for(j = 1;j<=n;j++)
    29                     {
    30                               if(dis[j]>max && !vis[j])
    31                               {
    32                                         k = j;
    33                                         max = dis[j];
    34                               }
    35                     }
    36 
    37                     vis[k] = 1;
    38 
    39                     for(j = 1;j<=n;j++)
    40                     {
    41                               if(dis[j] < max*map[k][j] && !vis[j])
    42                               {
    43                                         dis[j] = max*map[k][j];
    44                               }
    45                     }
    46           }
    47 }
    48 
    49 void init()
    50 {
    51           int i,j;
    52           for(i = 1;i<=n;i++)
    53           {
    54 
    55                     for(j = 1;j<=n;j++)
    56                     {
    57                               scanf("%lf",&map[i][j]);
    58                     }
    59           }
    60 }
    61 
    62 
    63 int main()
    64 {
    65           while(scanf("%d",&n)!=EOF)
    66           {
    67                     int r,t;
    68 
    69                     init();
    70 
    71                     scanf("%d",&r);
    72                     while(r--)
    73                     {
    74                               int a,b;
    75                               scanf("%d%d",&a,&b);
    76                               Dijkstra(a);
    77                               if(dis[b])
    78                                         printf("%.3lf
    ",dis[b]);
    79                               else
    80                                         printf("What a pity!
    ");
    81                     }
    82 
    83           }
    84 
    85           return 0;
    86 }
  • 相关阅读:
    OpenCV 3.2 Viz 3D可视化
    OpenCV 3.2 FlannBasedMatcher
    ORB-SLAM (四)Initializer单目初始化
    ORB-SLAM(十二)优化
    ORB-SLAM(十一)EPnP
    ORB-SLAM(十)LoopClosing Sim3求解
    ORB-SLAM(十)LoopClosing
    ORB-SLAM(九)LocalMapping
    ORB-SLAM(八)ORBmatcher 特征匹配
    ORB-SLAM(七)ORBextractor 特征提取
  • 原文地址:https://www.cnblogs.com/qlky/p/5015686.html
Copyright © 2011-2022 走看看