zoukankan      html  css  js  c++  java
  • spfa【最短路】【模板】

    1.jsk精辟解析

    spfa

    spfa-负环

    2.记录最优路径

    int prv[N], pree[N];
    int dis[N];
    bool in[N];
    inline void Init()
    {
        memset(dis, 0x3f, sizeof(dis));
        memset(in, false, sizeof(in));
    
    }
    void SpfaFirst()
    {
        Init();
        memset(prv, -1, sizeof(prv));
        queue<int> q;
        q.push(1);
        dis[1] = 0;
        in[1] = true;
    
        int u;
        while(!q.empty())
        {
            u = q.front();
            q.pop();
            in[u] = false;
            for(int i = p[u]; ~i; i = e[i].next)
            {
                int v = e[i].v, w = e[i].w;
                if(dis[u]+w < dis[v])
                {
                    //cout << dis[v] << " dw: "<<dw<<endl;
                    dis[v] = dis[u]+w;
                    prv[v] = u;
                    pree[v] = i;
                    if(!in[v])
                    {
                        q.push(v);
                        in[v] = true;
                    }
                }
            }
        }
    }
    

    3.普通spfa

    int dis[N];
    bool in[N];
    inline void Init()
    {
        memset(dis, 0x3f, sizeof(dis));
        memset(in, false, sizeof(in));
    
    }
    void Spfa()
    {
        Init();
        queue<int> q;
        q.push(1);
        dis[1] = 0;
        in[1] = true;
    
        int u;
        while(!q.empty())
        {
            u = q.front();
            q.pop();
            in[u] = false;
            for(int i = p[u]; ~i; i = e[i].next)
            {
                int v = e[i].v, w = e[i].w;
                if(dis[u]+w < dis[v])
                {
                    //cout << dis[v] << " dw: "<<dw<<endl;
                    dis[v] = dis[u]+w;
                    if(!in[v])
                    {
                        q.push(v);
                        in[v] = true;
                    }
                }
            }
        }
    }
    
  • 相关阅读:
    linux 安装 Chrome
    J2EE版本
    Java 源码解析之局部变量检查
    /etc/xinetd.conf 和 /etc/xinetd.d/*【新网络服务配置】
    Linux 内核编译
    linux 汇编
    /etc/ethers【地址映射】
    Linux LAMP 搭建
    Linux ftp 使用
    linux apache
  • 原文地址:https://www.cnblogs.com/bear-xin/p/14949708.html
Copyright © 2011-2022 走看看