• poj2387 Til the Cows Come Home(Dijkstra)


    题目链接

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

    题意

    有n个路标,编号1~n,输入路标编号及路标之间相隔的距离,求从路标n到路标1的最短路径(由于是无向图,所以也就是求从路标1到路标n的最短路径)。

    思路

    最短路径问题,由于结点数目最多可以有1000个,用Floyd算法应该会超时,而且做了之后发现输入会有相同的边,使用SPFA算法会麻烦一些,所以这里使用Dijkstra算法求解。

    代码

     1 #include <algorithm>
     2 #include <iostream>
     3 #include <cstring>
     4 #include <cstdio>
     5 using namespace std;
     6 
     7 const int INF = 0x3f3f3f;
     8 const int N = 1000 + 10;
     9 int map[N][N];
    10 int dist[N];
    11 int visit[N];
    12 int n, t;
    13 
    14 void dijkstra()
    15 {
    16     for (int i = 1; i <= n; i++)
    17         dist[i] = map[1][i];
    18     dist[1] = 0;
    19     int min_dist, now = 1;
    20     for (int i = 1; i <= n; i++)
    21     {
    22         visit[now] = 1;
    23         min_dist = INF;
    24         for (int j = 1; j <= n; j++)
    25         {
    26             if (!visit[j] && dist[j] < min_dist)
    27             {
    28                 min_dist = dist[j];
    29                 now = j;
    30             }
    31         }
    32         visit[now] = 1;
    33         for (int j = 1; j <= n; j++)
    34             dist[j] = min(dist[j], dist[now] + map[now][j]);
    35     }
    36     printf("%d
    ", dist[n]);
    37 }
    38 
    39 int main()
    40 {
    41     //freopen("poj2387.txt", "r", stdin);
    42     scanf("%d%d", &t, &n);
    43     memset(map, INF, sizeof(map));
    44     int a, b, d;
    45     for (int i = 0; i < t; i++)
    46     {
    47         scanf("%d%d%d", &a, &b, &d);
    48         if(map[a][b] > d)    //对于相同的边,取权值最小的那条
    49             map[a][b] = map[b][a] = d;
    50     }
    51     dijkstra();
    52     return 0;
    53 }
  • 相关阅读:
    Hive函数大全
    SparkSQL与Hive on Spark
    Hadoop安装—— WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platf
    centos7配置防火墙
    hive使用
    SPOOL 命令使用实例【oracle导出纯文本格式文件】
    IP 跟踪
    chinaunix---linux教程
    Python语言获取目录下所有文件
    m
  • 原文地址:https://www.cnblogs.com/sench/p/7977701.html
Copyright © 2020-2023  润新知