hdu 1384 Intervals

来源:互联网 发布:python日期格式 编辑:程序博客网 时间:2024/06/15 11:05

差分约束的应用。

#include<stdio.h>#include<iostream>#include<algorithm>#include<string.h>#include<queue>#include<vector>using namespace std;struct pi{    int no;    int to;    int cost;    int next;}pp1[2000005];int head[50005];pi pp;vector<pi>g[50005];int vis[50005];int dis[50005];queue<int >q;int tot;void add(int a,int b,int c){    pp1[tot].no=a;    pp1[tot].to=b;    pp1[tot].cost=c;    pp1[tot].next=head[a];    head[a]=tot++;}int main(){    int i,j,n,m,s,mm,k,min;    while(cin>>n)    {        tot=0;        memset(head,-1,sizeof(head));        mm=0;        min=10000000;        for(i=0;i<n;i++)        {            scanf("%d%d%d",&m,&s,&j);            add(m-1,s,j);            if(mm<s)                mm=s;            if(m-1<min)                min=m-1;        }        for(i=min;i<=mm-1;i++)        {            add(i,i+1,0);            add(i+1,i,-1);        }        for(i=min;i<=mm;i++)        {            dis[i]=-10000000;            vis[i]=0;        }        dis[min]=0;        vis[min]=1;        q.push(min);        while(!q.empty())        {            k=q.front();            q.pop();            vis[k]=0;            for(i=head[k];i!=-1;i=pp1[i].next)            {                if(dis[pp1[i].to]<dis[k]+pp1[i].cost)                {                    dis[pp1[i].to]=dis[k]+pp1[i].cost;                    if(!vis[pp1[i].to]){                        q.push(pp1[i].to);                        vis[pp1[i].to]=1;                    }                }            }        }        printf("%d\n",dis[mm]);    }    return 0;}


0 0
原创粉丝点击