• poj 3259Wormholes (spfa最短路径)


    #include<stdio.h>
    #include<string.h>
    #include<limits.h>
    #include<queue>
    using namespace std;
    #define N 5505
    #define M 55000//注意边和点集的数组大小
    struct edge
    {
        int to,value,next;
    }edges[M];
    int heads[N],len=0;
    int addedge(int u,int v,int w)
    {
        edges[len].to=v,edges[len].value=w,edges[len].next=heads[u];
        heads[u]=len++;
        return 0;
    }
    int n,m;
    
    int spfa(int v)
    {
        queue<int> q;
        int inqueue[N],dis[N];
        memset(inqueue,0,sizeof(inqueue)),inqueue[v]=1;
        q.push(v);
        for(int i=0;i<n;i++) dis[i]=INT_MAX;
        dis[v]=0;
        int times[N];
        memset(times,0,sizeof(times)),times[v]=1;
    
        while(!q.empty()){
            int x=q.front();
            q.pop();
            inqueue[x]=0;
            for(int j=heads[x];j!=-1;j=edges[j].next){
                int to=edges[j].to,value=edges[j].value;
                if(value+dis[x]<dis[to]){
                    dis[to]=value+dis[x];
                    if(!inqueue[to]){  //注意已经在队列里面的不用再加入队列
                        if(++times[to]>=n) return 0;
                        inqueue[to]=1,q.push(to);
                    }
                }
            }
        }
        return 1;
    }
    int main(void)
    {
        int i,j,t;
        int a,b,c;
        scanf("%d",&t);
        while(t--){
            int w;
            memset(heads,-1,sizeof(heads));//注意不要忘记
            scanf("%d%d%d",&n,&m,&w);
            while(m--){
                scanf("%d%d%d",&a,&b,&c);
                addedge(a-1,b-1,c);
                addedge(b-1,a-1,c);
            
            }
            while(w--){
                scanf("%d%d%d",&a,&b,&c);
                addedge(a-1,b-1,-c);
            }
            if(!spfa(0)) printf("YES
    ");
            else printf("NO
    ");
        }
        
    }
  • 相关阅读:
    简单爬虫架构解析
    三种urllib实现网页下载,含cookie模拟登陆
    MySQL 从入门到删库
    Python Set
    Python dict
    Python tuple
    Python List
    死锁问题
    线程通信之生产者和消费者案例
    多线程安全和线程同步
  • 原文地址:https://www.cnblogs.com/woshijishu3/p/3858411.html
Copyright © 2020-2023  润新知