• HDU 2544 (Djikstra)


    题目链接:

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

    简单的最短路径问题,用Djikstra即可解决!

    代码如下:

    #include <cstdio>
    #include <cstring>
    using namespace std;

    const int MAX = 101;
    const int INF = 1000000001;
    int map[MAX][MAX];
    int visited[MAX];
    int dist[MAX];

    int djikstra(int v, int n);

    int main()
    {
      int n, m;
      int i;
      int r_i, r_j, weight;
      while(scanf("%d%d", &n, &m) != EOF && (n || m))
      {
        memset(map, INF, sizeof(map));
        for(i = 1; i <= n; i++)
        {
          map[i][i] = 0;
        }
        for(i = 1; i <= m; i++)
        {
          scanf("%d%d%d", &r_i, &r_j, &weight);
          map[r_i][r_j] = weight;
          map[r_j][r_i] = weight;
        }
        djikstra(1, n);
      }
      return 0;
    }

    int djikstra(int v, int n)
    {
      int i, j;
      int min, sum = 0, k;
      memset(visited, 0, sizeof(visited));
      for(i = 1; i <= n; i++)
      {
        dist[i] = map[v][i];
      }
      visited[v] = 1;
      for(i = 2; i <= n; i++)
      {
        min = INF;
        for(j = 1; j <=n; j++)
        {
          if(!visited[j] && dist[j] < min)
          {
            min = dist[j];
            k = j;
          }
        }
        if(min == INF)
        {
          break;
        }
        sum = min;
        if(k == n)
        {
          break;
        }
        visited[k] = 1;
        for(j = 1; j <= n; j++)
        {
          if(!visited[j] && dist[j] > map[k][j] + dist[k])
          {
            dist[j] = map[k][j] + dist[k];
          }
        }
      }
      printf("%d\n", sum);
      return 0;
    }

  • 相关阅读:
    0427-2
    0427-1
    0426html常用标签属性
    HTML,标签学习
    oracle培训,HTML学习
    第三十七天
    第三十六天
    第三十五天
    第四十三天
    第四十二天
  • 原文地址:https://www.cnblogs.com/10jschen/p/2620342.html
Copyright © 2020-2023  润新知