• poj 3159 查分约束 +dij+heap+前向星存图


    n表示有n个同学,m表示m组数据

    u,v,w,表示同学u要求同学v的糖果数不能多于他超过w个

    输出:同学n和同学1的他糖果数最多相差几个??

    关于查分约束 :https://blog.csdn.net/my_sunshine26/article/details/72849441

    与最短路模型的关系 之后就是个最短路的求解

    之前一直用vector存图,但是超时。。。只好换个前向星的方法

    #include<cstdio>
    #include<iostream>
    #include<queue>
    #include<cstring>
    #include<cmath>
    using namespace std;
    
    #define ll long long
    #define pb push_back
    #define fi first
    #define se second
    #define pii pair<int,int>
    #define mp make_pair
    
    const int N  =3e4+4;
    const int M  =1e5+5e4+3;
    const int INF = 1E9+3;
    
    struct edge{
        int to,cost;
        int next;
    };
    int d[N];
    edge es[M];
    int head[N];
    int n,m;
    int k;
    void addedge(int u,int v,int c){
        es[k].to =v;
        es[k].cost =c;
        es[k].next = head[u];
        head[u] = k;
        k++;
    }
    
    void dij(){
    
        for(int i=1;i<=n;++i)d[i]=INF;
    
            priority_queue< pii , vector <pii>  ,greater<pii >  >Q;
        //val  ind
            d[1]=0;
            Q.push ( mp (0,1));
    
            while(!Q.empty()){
                pii tmp = Q.top();Q.pop();
                int v = tmp.se;int val = tmp.fi;
                if(d[v]<val)continue;
    
                for(int i = head[v];i!=-1; i = es[i].next){
                    edge e = es[i];
                    if(d[e.to]> d[v]+e.cost){
                        d[e.to ] = d[v]+e.cost;
                        Q.push(mp(d[e.to],e.to));
                    }
                }
            }
    }
    
    int main(){
    
        while(scanf("%d %d",&n,&m)!=EOF){
    
            int a,b,c;
            k  =0 ;
            memset(head,-1,sizeof(head));
    
            while(m--){
                scanf("%d %d %d",&a,&b,&c);
                //x[b]-x[a]<=c
                addedge(a,b,c);
            }
            dij();
            cout<<d[n]<<endl;
        }
    
    
    
        return 0;
    }
  • 相关阅读:
    DB2中的prepare和bind
    MDC 设置CURRENTMDC ROLLOUT MODE
    TSO缩写
    docker资料仓库搭建
    mfs 使用心得
    个人简介
    C# 关于字符串中 符合正则表达式的指定字符的替换的方法
    学而不思则罔,思而不学则殆
    点击按钮下载效果
    菜鸟成长之路SQL Server事物学习,高手跳过
  • 原文地址:https://www.cnblogs.com/wjhstudy/p/9756907.html
Copyright © 2020-2023  润新知