zoj 2770 Burn the Linked Camp 差分约束系统

本文深入探讨了算法和数据结构的核心概念,通过实际代码示例展示了如何使用C++解决复杂问题。从排序算法到数据结构应用,本文提供了一个全面的指南,帮助读者提升编程技能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

我的新博客: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\n",dist[n]-dist[0]);
        else
            printf("Bad Estimations\n");
    }
    return 0;
}

我的新博客:http://xiang578.github.io/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值