zoukankan      html  css  js  c++  java
  • 最短路径---dijkstra算法模板

    dijkstra算法模板

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

     1 #include<stdio.h>
     2 #include<string.h>
     3 #include<math.h>
     4 #include<iostream>
     5 #include<stdlib.h>
     6 #include<algorithm>
     7 #include<queue>
     8 #include<vector>
     9 #include<string>
    10 #include<set>
    11 #include<cctype>
    12 #include<sstream>
    13 #define mem(a) memset(a,0,sizeof(a))
    14 #define LL long long
    15 #define inf 0x3f3f3f3f
    16 using namespace std;
    17 const int N=1e3+5;
    18 int mp[N][N],dis[N],mark[N];
    19 int n,m;
    20 int dijkstra(int s,int t)
    21 {
    22    for(int i=0;i<n;i++)
    23    dis[i]=(i==s?0:mp[s][i]);
    24    mark[s]=1;
    25    //dis[s]=0;
    26    int v;
    27    for(int i=1;i<n;i++)
    28    {
    29       int mx=inf;
    30       for(int j=0;j<n;j++)
    31         if(dis[j]<mx&&!mark[j])
    32           mx=dis[v=j]; //%%%
    33       if(mx==inf) break;
    34       mark[v]=1;
    35       for(int j=0;j<n;j++)
    36       {
    37           if(!mark[j]&&(dis[j]>dis[v]+mp[v][j]))
    38             dis[j]=dis[v]+mp[v][j];
    39       }
    40    }
    41    if(dis[t]>=inf) return -1;
    42    return dis[t];
    43 }
    44 int main()
    45 {
    46  while(~scanf("%d%d",&n,&m)&&(n+m))
    47  {
    48      for(int i=0;i<n;i++)
    49      {
    50        for(int j=0;j<n;j++)
    51        {
    52            if(i==j)mp[i][j]=0;
    53            else mp[i][j]=inf;
    54        }
    55      }
    56      mem(mark);
    57      int l,r,x;
    58      for(int i=1;i<=m;i++)
    59      {
    60          scanf("%d%d%d",&l,&r,&x);
    61          if(mp[l][r]>x) mp[l][r]=mp[r][l]=x;
    62      }
    63      int s,t;
    64      scanf("%d%d",&s,&t);
    65 
    66      printf("%d
    ",dijkstra(s,t));
    67  }
    68  return 0;
    69 }
    View Code
  • 相关阅读:
    TensorFlow conv2d实现卷积
    tensorflow max_pool(最大池化)应用
    tensorflow Relu激活函数
    tensorflow Sigmoid 应用
    tensorflow softmax应用
    并发和并行的区别
    eclipse常用快捷键即项目操作
    zookeeper学习一
    TCP的三次握手与四次挥手
    python编码问题unicode&str
  • 原文地址:https://www.cnblogs.com/XXrll/p/10319289.html
Copyright © 2011-2022 走看看