zoukankan      html  css  js  c++  java
  • SPFA算法

    提供两种spfa算法模板

    1.链表储存:

     1 /*--------------------------spfa链表储存*/ 
     2 const int N = 10100 ;
     3 
     4 struct Edge{
     5     int to,w,nxt;
     6 }e[100010];
     7 int head[N],p;
     8 int dis[N];
     9 bool vis[N];
    10 queue <int> q;
    11 
    12 void spfa(int a)  //a点到其他点的最短距离 
    13 {
    14     memset(dis,0x3f,sizeof(dis));
    15     vis[a] = true;
    16     q.push(a);
    17     dis[a] = 0;
    18     while(!q.empty())
    19     {
    20         int d = q.front();
    21         for(int i = head[d]; i ;i = e[i].nxt)
    22         {
    23             int w = e[i].w ,v = e[i].to;
    24             if(dis[d] + w < dis[v])
    25             {
    26                 dis[v] = dis[d] + w;
    27                 if(!vis[v])
    28                 {
    29                     q.push(v);
    30                     vis[v] = true ; 
    31                 }
    32             }
    33         }
    34         q.pop();
    35         vis[d] = false ;
    36     }
    37 }

    2.数组储存

     1 /*----------------------------------spfa数组储存*/ 
     2 const int N = 1010 ;
     3 int map[N][N];
     4 int dis[N];
     5 bool vis[N];
     6 int n;
     7 queue <int> q;
     8 
     9 void spfa(int a)
    10 {
    11     memset(dis,0x3f,sizeof(dis));
    12     q.push(a);
    13     vis[a] = true;
    14     dis[a] = 0;
    15     while(!q.empty())
    16     {
    17         int d = q.front();
    18         for(int i=1;i<=n;++i)
    19         {
    20             if(map[d][i]!=0 && map[d][i]+dis[d] < dis[i])
    21             {
    22                 dis[i] = dis[d] + map[d][i];
    23                 if(!vis[i])
    24                 {
    25                     q.push(i);
    26                     vis[i] = true; 
    27                 }
    28             }
    29         }
    30         q.pop();
    31         vis[d] = false ;                                                                                                                                                                                                                                                                           
    32     }
    33 }
  • 相关阅读:
    日常记Bug
    Docker部署Django
    杂记:防火墙、企业微信登陆、RestFrameWork
    Python2和Python3的编码
    杂记:Django和static,Nginx配置路径,json_schema
    xlwt模块的使用
    企业微信登陆
    markdown八条基础语法
    webstorm 添加markdown支持
    【electron系列之二】复制图片
  • 原文地址:https://www.cnblogs.com/mjtcn/p/6832353.html
Copyright © 2011-2022 走看看