zoukankan      html  css  js  c++  java
  • poj3159 Candies

    POJ - 3159

    题目大意:
      给n个小孩发糖,有m个条件
      每个条件给出a,b,c,使得v[b]-v[a]<=c
      求v[n]-v[1]的最大值

    Sample Input

    2 2
    1 2 5
    2 1 4

    Sample Output

    5
    /*
        差分约束裸题。
        差分约束的基本模式为,给出若干个形如a-b<=c的不等式,问你x-y的最大值是多少
        那么对每个不等式a-b<=c,连一条由b指向a权值为c的有向边,所有的不等式构成一个图
        那么答案就是y到x的最短路 
    */
    #include<iostream>
    #include<stack>
    #include<cstdio>
    #include<cstring>
    using namespace std;
    const int maxn=3000010;
    const int maxm=3500000;
    const int INF=999999;
    int n,m,head[maxn],num,dis[maxn];
    bool vis[maxn];
    struct node{
        int to,v,pre;
    }e[maxn];
    void add(int from,int to,int v){
        e[num].to=to;
        e[num].v=v;
        e[num].pre=head[from];
        head[from]=num++; 
    }
    void spfa(){
        int s=1;
        stack<int>q;
        q.push(s);
        vis[s]=1;
        dis[s]=0;
        while(!q.empty()){
            int cur=q.top();
            q.pop();
            vis[cur]=0;
            for(int i=head[cur];i!=-1;i=e[i].pre){
                int id=e[i].to;
                if(dis[id]>dis[cur]+e[i].v){
                    dis[id]=dis[cur]+e[i].v;
                    if(!vis[id]){
                        q.push(id);
                        vis[id]=1;
                    }
                }
            }
        }
    }
    int main(){
        while(scanf("%d%d",&n,&m)!=EOF){
            for(int i=1;i<=n;i++){
                head[i]=-1;
                dis[i]=INF;
                vis[i]=0;
            }
            num=0;
            for(int i=0;i<m;i++){
                int from,to,v;
                scanf("%d%d%d",&from,&to,&v);
                add(from,to,v);
            } 
            spfa();
            printf("%d
    ",dis[n]);
        }
        return 0;
    }
  • 相关阅读:
    本地项目上传到github
    linux 常用命令
    mysql 查询日志基本操作
    js 短信60秒倒计时
    windows下 mysql 移库
    INSERT INTO table(xxx) VALUES (xxx)
    springboot 项目接口调用失败
    P1093 奖学金
    P1403约数研究
    P1147连续自然数和
  • 原文地址:https://www.cnblogs.com/thmyl/p/7266402.html
Copyright © 2011-2022 走看看