• SPFA算法O(kE)


    SPFA算法O(kE)
     1 #include<iostream>
     2 #include<cstdio>
     3 #include<cstring>
     4 using namespace std;
     5 int que[1000];
     6 int map[1000][1000];
     7 int iss[1000];
     8 int dis[1000];
     9 int path[1000];
    10 int n,m,w,x,y,aa,bb;
    11 const int maxn=999999;
    12 void ff(int u)
    13 {
    14     int head=0;
    15     int tail=1;
    16     que[head]=u;
    17     iss[u]=1;
    18     dis[u]=0;
    19     path[u]=u;
    20     int p;
    21     do
    22     {
    23         p=que[head];
    24         for(int i=1;i<=n;i++)
    25          {
    26              if(dis[i]>dis[p]+map[p][i])
    27               {
    28                   dis[i]=dis[p]+map[p][i];
    29                   path[i]=p;
    30                   if(iss[i]==0)
    31                    {
    32                        tail++;
    33                        que[tail]=i;
    34                        iss[i]=1;
    35                    }
    36               }
    37          }
    38          iss[p]=0;
    39          head++;
    40     }while(head!=tail);
    41     cout<<dis[bb]<<endl;
    42 }
    43 void print(int q,int p)
    44 {
    45     int qq[1000];
    46     int tot=1;
    47     qq[tot]=p;
    48     int temp=path[p];
    49     while(temp!=q)
    50      {
    51          tot++;
    52          qq[tot]=temp;
    53          temp=path[temp];
    54      }
    55      tot++;
    56      qq[tot]=q;
    57      for(int i=tot;i>1;i--) 
    58       {
    59           cout<<qq[i]<<"-->";
    60       }
    61       cout<<qq[1];
    62 }
    63 int main()
    64 {
    65     cin>>n>>m;
    66     memset(map,maxn,sizeof(map));
    67     for(int i=1;i<=m;i++)
    68      {
    69          cin>>x>>y>>w;
    70          map[x][y]=w;
    71      }
    72     memset(iss,0,sizeof(iss));
    73     memset(dis,maxn,sizeof(dis));
    74     cin>>aa>>bb;
    75     ff(aa);
    76     print(aa,bb);
    77     return 0;
    78 }

  • 相关阅读:
    HTML5中的canvas
    预解释
    asp.net中的CheckBox控件的使用
    jQuery 效果
    常用的 jQuery 事件
    轮播图
    迭代器与生成器
    js对象拷贝
    事件循环、同步异步、宏任务微任务
    Vue 的 keep-alive 组件缓存
  • 原文地址:https://www.cnblogs.com/lyqlyq/p/6689650.html
Copyright © 2020-2023  润新知