zoukankan      html  css  js  c++  java
  • 负环

    Bellman-Ford

    const int inf=0x3f3f3f3f,maxn=110,maxm=10010;
    int n,m,dis[maxn];
    
    struct Edge{
        int u,v,w;
    }edge[maxm];
    
    bool Bellman_Ford(){
        memset(dis,inf,sizeof(dis));
        dis[1]=0;
        int check;
        for(int i=1;i<=n;i++){
            check=0;
            for(int j=1;j<=m;j++){
                int u=edge[j].u,v=edge[j].v,w=edge[j].w;
                if(dis[v]>dis[u]+w){
                    dis[v]=min(dis[v],dis[u]+w);
                    if(i==n) return true;
                    check=1;
                }
            }
            if(!check) break;
        }
        return false;
    }
    

    SPFA

    const int maxn=1010,inf=0x3f3f3f3f;
    int n,inq[maxn],cnt[maxn],dis[maxn];
    
    bool spfa(int s){
        for(int i=1;i<=n;i++){
            dis[i]=(i==s)?0:inf;
            inq[i]=(i==s)?1:0;
            cnt[i]=(i==s)?1:0;
        }
        queue<int> q;
        q.push(s);
        while(!q.empty()){
            int p=q.front();
            q.pop();
            inq[p]=0;
            for(int i=head[p];~i;i=nxt[i]){
                int v=to[i],w=weight[i];
                if(dis[v]>dis[p]+w){
                    dis[v]=dis[p]+w;
                    cnt[v]++;
                    if(cnt[v]>=n) return true;
                    if(!inq[v]){
                        inq[v]=1;
                        q.push(v);
                    }
                }
            }
        }
        return false;
    }
    
  • 相关阅读:
    IntelliJ IDEA基本设置
    git安装
    Git的作用与安装
    git是什么
    SpringMVC控制器类方法的返回值
    SpringMVC中Model机制
    什么是Nosql
    如何使用Jedis操作redis
    redis中数据类型操作命令
    redis的全局命令
  • 原文地址:https://www.cnblogs.com/fxq1304/p/13550521.html
Copyright © 2011-2022 走看看