zoukankan      html  css  js  c++  java
  • 最短路(判负环

    void Add(int u,double cost,int v)//邻接表存储关系
    {
        w[top] = cost;
        Key[top] = v;
        next[top] = head[u];
        head[u] = top++;
    }
     
    bool SPFA(int x)
    {
     
        memset(vis,false,sizeof(vis));
        memset(inq,0,sizeof(inq));
        queue<int> Q;
        for(int i = 1;i <= n;i++) dis[i] = (i == x ? 0 : INF);
        vis[x] = true;
        inq[x] = 1;
        Q.push(x);
        while(!Q.empty())
        {
            int cur = Q.front();
            Q.pop();
            vis[cur] = false;
            for(int e = head[cur] ; e != -1; e = next[e])
            {
                int v = Key[e];
                if(dis[v] < dis[cur] * w[e])
                {
                    dis[v] = dis[cur] * w[e];
                    if(!vis[v])
                    {
                        inq[v] ++;
                        if(inq[v] >= n) return true;//如果入队次数超过n-1次说明存在环或负权
                        Q.push(v);
                        vis[v] = true;
                    }
                }
            }
        }
        return false;
    }
    View Code

    初始map为INF

    bool SPFA(int x)
    {
        queue<int> Q;
        memset(vis,false,sizeof(vis));
        memset(in,false,sizeof(in));
        for(int i = 1;i <= n;i++)   dis[i] = (i==x?0: INF);
        vis[x] = true;
        Q.push(x);
        in[x] = 1;
        while(!Q.empty())
        {
            int cur = Q.front();
            Q.pop();
            vis[cur] = false;
            for(int i = 1;i <=n;i++)
            {
                if(map[cur][i]!=-INF&&dis[i] < dis[cur] * map[cur][i])
                {
                    dis[i] = dis[cur] * map[cur][i];
                    if(!vis[i])
                    {
                        in[i] ++;
                        if(in[i] >= n) return true;//如果入队次数超过n-1次说明存在环或负权
                        Q.push(i);
                        vis[i] = true;
                    }
                }
            }
        }
        return false;
    }                                                                                                                                                         
    View Code
  • 相关阅读:
    路由配置系统(URLconf)
    Django常见命令
    MVC框架和MTV框架
    Django基础
    服务器程序和应用程序
    自定义web框架
    HTTP协议对收发消息的格式要求
    web框架的本质
    python国内镜像源
    Scrapy框架安装失败解决办法
  • 原文地址:https://www.cnblogs.com/DWVictor/p/10294754.html
Copyright © 2011-2022 走看看