• Dijkstra 复习


    Dijkstra 算法不仅是求图中最短路径的O(N²)算法

    在关于图的动态规划中可以将题目转换为图,再用该算法进行DP

    代码如下

    #include<iostream>  // made by Huing
    #include<cstdio>
    #include<cstring>
    #include<cmath>
    using namespace std;
    int c[10001],f[1001][1001],n,m,s,t;
    bool exist[10001],b[10001];
    void Dijkstra(int s)
    {
     memset(b,false,sizeof(b));
     b[s]=true;
     c[s]=0;
     for (int i=1;i<=n;i++) c[i]=f[s][i];//初始化
     
     for (int i=1;i<+n-1;i++)

     {
      int k=0,minl=1e30;
      for (int j=1;j<=n;j++)
      if(!b[j]&&c[j]<minl){
       k=j;minl=c[j];
      }
      if(k==0) break;
      b[k]=true;
      for (int j=1;j<=n;j++)
      c[j]=min(c[j],c[k]+f[k][j]); 
     }
     cout<<c[t];
    }
    int main()
    {
     cin>>n>>s>>t;                //求s到t的最短路径


     memset(f,-0x7fffffff/3,sizeof(f));
        for (int i=1;i<=n;i++)
     for (int j=1;j<=n;j++)
     cin>>f[i][j];
     Dijkstra(s);
    }

  • 相关阅读:
    ASP.NET
    JS、JQury
    ASP.NET
    ASP.NET
    ASP.NET
    C#
    C#
    C#
    基础算法-树:预备知识
    开发环境配置--Ubuntu+Qt4+OpenCV(二)
  • 原文地址:https://www.cnblogs.com/ffhy/p/5658223.html
Copyright © 2020-2023  润新知