我的新博客:http://xiang578.github.io/
#include "stdio.h"
#include "string.h"
#include "algorithm"
using namespace std;
const int inf=1<<30;
struct name
{
int u,v,w;
}e[25000];
int n,m,c[10005],d[10005],dist[10005],k;
int main()
{
int i,j,u,v,w,t;
bool flag;
while(~scanf("%d%d",&n,&m))
{
for(i=1,k=0;i<=n;i++)
{
scanf("%d",&c[i]);
e[k].u=i-1;
e[k].v=i;
e[k].w=c[i];
k++;
e[k].u=i;
e[k].v=i-1;
e[k].w=0;
k++;
d[i]=d[i-1]+c[i];
}
for(i=0;i<m;i++)
{
scanf("%d%d%d",&u,&v,&w);
e[k].u=v;
e[k].v=u-1;
e[k].w=-w;
k++;
e[k].u=u-1;
e[k].v=v;
e[k].w=d[v]-d[u-1];
k++;
}
for(i=0;i<=n;i++)
{
dist[i]=inf;
}
dist[0]=0;
dist[n]=0;
for(i=0;i<n;i++)
{
for(j=0;j<k;j++)
{
if(dist[e[j].u]!=inf&&dist[e[j].u]+e[j].w<dist[e[j].v])
{
dist[e[j].v]=dist[e[j].u]+e[j].w;
}
}
}
for(i=0,flag=1; i<k; i++)
{
if(dist[e[i].u]!=inf&&dist[e[i].u]+e[i].w<dist[e[i].v])
{
flag=0;
break;
}
}
if(flag)
printf("%d
",dist[n]-dist[0]);
else
printf("Bad Estimations
");
}
return 0;
}
版权声明:本文为博主原创文章,未经博主允许不得转载。http://xiang578.top/