首页 > 其他分享 >P5960 【模板】差分约束

P5960 【模板】差分约束

时间:2024-04-04 21:23:30浏览次数:21  
标签:val int P5960 差分 next vis now 模板 dis

原题链接

题解

我一直苦苦思考为什么要建边,现在我明白了,如果令 \(x_i\) 代表离源点的最短路径长度的话,建边之后,\(x_i-x_j<=y_k\) 一定成立
只有当出现负环的时候说明条件出现了矛盾

太神了

code

#include<bits/stdc++.h>
using namespace std;
queue<int> q;
int in_q[5005]={0};
int vis[5006]={0};
int dis[5005]={0};
int n,m;
struct node
{
    int to,val;
};
vector<node> G[5005];
int fuhuan()
{
    memset(dis,0x3f,sizeof dis);

    queue<int> q;
    dis[0]=0;
    q.push(0);
    in_q[0]=1;
    while(q.size())
    {
        int now=q.front();
        q.pop();
        in_q[now]=0;
        vis[now]++;
        if(vis[now]>n) return 0;
        for(auto next:G[now])
        {
            int to=next.to,val=next.val;
            if(dis[now]+val<dis[to])
            {
                dis[to]=dis[now]+val;
                if(!in_q[to])
                {
                    q.push(to);
                    in_q[to]=1;
                }
            }
        }
    }
    return 1;
}
int main()
{
    cin>>n>>m;

    for(int i=1;i<=m;i++)
    {
        int x,y,v;
        cin>>x>>y>>v;
        G[y].push_back({x,v});
    }

    for(int i=1;i<=n;i++) G[0].push_back({i,0});

    if(!fuhuan()) puts("NO");
    else for(int i=1;i<=n;i++) cout<<dis[i]<<" ";
    return 0;
}

标签:val,int,P5960,差分,next,vis,now,模板,dis
From: https://www.cnblogs.com/pure4knowledge/p/18114615

相关文章

  • nodejs中使用Nunjucks 模板引擎
    要在Koa2中使用Nunjucks模板引擎,你需要进行一些额外的设置。以下是一个示例代码,演示了如何在Koa2中集成Nunjucks:首先,确保已经安装了Koa和Nunjucks:npminstallkoanunjucks然后,在项目中创建一个名为app.js的文件,并添加以下代码:constKoa=require('koa');con......
  • 【Java】PDF模板生成PDF文档
    一、需求背景客户要求一份文书,文书内容有一些表单项,例如:1、基本的是和否(单选框或复选框)2、备注内容(纯文本信息)3、单位,机构组织,人员,字典项(下拉选择)4、用户数字签名(图片信息)文书的模板是固定不变的,只需要把上述信息写入模板中生成即可这个模板不是动态的,动态模板是表单数据......
  • P2613 【模板】有理数取余
    原题链接题解然后就变成了求解同余方程code#definelllonglong#include<bits/stdc++.h>constllmod=19260817;usingnamespacestd;llx,y;llc;lla,b;inlinevoidread(ll&x){x=0;llflag=1;charc=getchar();while(c<'0......
  • C++ templates: (1)、类模板
    1、类模板定义(主模板)template<typenameT,typenameC=list<T>,intMAX=10>classStack{public:usingvalue_type=T;public:Stack(constT&a):m_oContainer{move(a)}{cout<<"Stack<T,list<T>>()"<<......
  • 请描述一下Velocity模板中的循环结构是如何工作的。Velocity有哪些内置的函数和方法?能
    请描述一下Velocity模板中的循环结构是如何工作的。Velocity是一个基于Java的模板引擎,它允许开发人员使用简单的模板语言来引用由Java代码定义的对象,并在生成的文本中呈现这些对象。在Velocity模板中,循环结构用于遍历集合或数组,并对每个元素执行特定的操作。在Velocity模......
  • 代码模板
    代码模板基本代码模板#pragmaGCCoptimize(1)#pragmaGCCoptimize(2)#pragmaGCCoptimize(3,"Ofast","inline")#include<bits/stdc++.h>usingnamespacestd;usingi64=longlong;intmain(){ios::sync_with_stdio(false);cin.t......
  • 模板引擎 Handlebars.js
    模板引擎Handlebars.js 概述Handlebars.js是一个简单而强大的JavaScript模板引擎。它允许开发者通过定义模板和数据来生成动态的HTML页面。Handlebars.js基于Mustache模板语法,它提供了一些扩展和增强功能。并且开发者可以创建可重用的模板,并通过将数据传递给模板......
  • P3384 【模板】重链剖分/树链剖分
    原题链接题解dalao‘sblog我自己的认识请看代码区code#include<bits/stdc++.h>usingnamespacestd;intn,Q,root,mod;intbigson[100005];//和自己在同一条链上的儿子节点vector<int>G[100005];intsizes[100005];//主要是为了求子树大小,经过验证选择哪一个儿子节点......
  • 蓝桥杯T5合根植物——并查集模板题
    5.合根植物-蓝桥云课(lanqiao.cn) #include<bits/stdc++.h>usingnamespacestd;intm,n,pre[1000000];set<int>s;intfind(intx){if(pre[x]==x)returnx;returnfind(pre[x]);}intmain(){//请在此输入您的代码cin>>m>>......
  • WEB专项-文件上传&命令执行&SSTI模板注入&其他
    文件上传一、Upload11.进入靶场,是一个文件上传功能的页面,尝试上传一个一句话木马去getshell。2.发现提示是notimage,那就通过burp抓包进行类型的修改。3.但却提示我这个是php代码,看来对文件的后缀名进行了过滤,那就将其后缀名改为jpg。4.又提示我文件中包含<?,那接下来......