标签:
注意初始化
#include "stdio.h"
#include "string.h"
#include "algorithm"
#include "queue"
#include "vector"
using namespace std;
const int inf=0x7FFFFFFF;
struct node
{
int to;
int c;
};
int d[50005],inq[50005];
vector<node>t[50005];
queue<int>q;
int main()
{
int i,n,u,v,w,k,mx,mn;
node m;
while(~scanf("%d",&n))
{
for(i=0;i<50005;i++)
{
t[i].clear();
d[i]=-inf;
inq[i]=0;
}
while(!q.empty()) q.pop();
mx=0;mn=99999;
for(i=0;i<n;i++)
{
scanf("%d%d%d",&u,&v,&w);
m.to=v+1;
m.c=w;
t[u].push_back(m);
if(mx<v) mx=v;
if(mn>u) mn=u;
}
for(i=mn;i<=mx;i++)
{
m.to=i;
m.c=-1;
t[i+1].push_back(m);
m.to=i+1;
m.c=0;
t[i].push_back(m);
}
d[mn]=0;
inq[mn]=1;
q.push(mn);
while(!q.empty())
{
u=q.front();
q.pop();
inq[u]=0;
for(i=0;i<t[u].size();i++)
{
v=t[u][i].to;
k=t[u][i].c+d[u];
if(d[v]<k)
{
d[v]=k;
if(inq[v]==0)
{
inq[v]=1;
q.push(v);
}
}
}
}
printf("%d\n",d[mx+1]);
}
return 0;
}
#include "stdio.h"
#include "string.h"
#include "algorithm"
#include "queue"
#include "vector"
using namespace std;
const int inf=0x7FFFFFFF;
struct node
{
int to;
int c;
};
int d[50005],inq[50005];
vector<node>t[50005];
queue<int>q;
int main()
{
int i,n,u,v,w,k,mx,mn;
node m;
while(~scanf("%d",&n))
{
for(i=0;i<50005;i++)
{
t[i].clear();
d[i]=inf;
inq[i]=0;
}
while(!q.empty()) q.pop();
mx=0;mn=99999;
for(i=0;i<n;i++)
{
scanf("%d%d%d",&u,&v,&w);
m.to=u;
m.c=-w;
t[v+1].push_back(m);
if(mx<v) mx=v;
if(mn>u) mn=u;
}
for(i=mn;i<=mx;i++)
{
m.to=i+1;
m.c=1;
t[i].push_back(m);
m.to=i;
m.c=0;
t[i+1].push_back(m);
}
inq[mx+1]=1;
d[mx+1]=0;
q.push(mx+1);
while(!q.empty())
{
u=q.front();
q.pop();
inq[u]=0;
for(i=0;i<t[u].size();i++)
{
v=t[u][i].to;
k=t[u][i].c+d[u];
if(d[v]>k)
{
d[v]=k;
if(inq[v]==0)
{
inq[v]=1;
q.push(v);
}
}
}
}
printf("%d\n",-d[mn]);
}
return 0;
}
版权声明:本文为博主原创文章,未经博主允许不得转载。
标签:
原文地址:http://blog.csdn.net/xinag578/article/details/47186151