zoukankan      html  css  js  c++  java
  • 904. 虫洞

    \(spfa\)判负环裸题

    const int N=510;
    vector<PII> g[N];
    int dist[N];
    bool vis[N];
    int cnt[N];
    int n,m,w;
    
    bool spfa()
    {
        memset(dist,0x3f,sizeof dist);
        memset(cnt,0,sizeof cnt);
        memset(vis,0,sizeof vis);
        queue<int> q;
    
        for(int i=1;i<=n;i++)
        {
            q.push(i);
            vis[i]=true;
        }
    
        while(q.size())
        {
            int t=q.front();
            q.pop();
    
            vis[t]=false;
    
            for(int i=0;i<g[t].size();i++)
            {
                int j=g[t][i].fi,w=g[t][i].se;
                if(dist[j] > dist[t]+w)
                {
                    dist[j]=dist[t]+w;
                    cnt[j]=cnt[t]+1;
                    if(cnt[j] >= n) return true;
                    if(!vis[j])
                    {
                        vis[j]=true;
                        q.push(j);
                    }
                }
            }
        }
        return false;
    }
    
    int main()
    {
        int T;
        cin>>T;
        while(T--)
        {
            cin>>n>>m>>w;
    
            for(int i=1;i<=n;i++) g[i].clear();
    
            while(m--)
            {
                int a,b,c;
                cin>>a>>b>>c;
                g[a].pb({b,c});
                g[b].pb({a,c});
            }
    
            while(w--)
            {
                int a,b,c;
                cin>>a>>b>>c;
                g[a].pb({b,-c});
            }
    
            bool t=spfa();
            if(t) puts("YES");
            else puts("NO");
        }
        //system("pause");
    }
    
  • 相关阅读:
    Javascript | 模拟mvc实现点餐程序
    DataTables实现按分组小计
    [Webcast]Silverlight探秘系列课程
    python 环境搭建
    MailMessage
    WebRequest
    消息队列(Message Queue)
    c# 缓存
    c# 反射
    数据库连接超时
  • 原文地址:https://www.cnblogs.com/fxh0707/p/14130207.html
Copyright © 2011-2022 走看看