热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Acwing1169.糖果(差分约束最小值判断是否有解

添加链接描述#includeusingnamespacestd;constintN1e510,M3e510;intn,k;inth[N],w[M]

添加链接描述
在这里插入图片描述

#include
using namespace std;
const int N=1e5+10,M=3e5+10;
int n,k;
int h[N],w[M],e[M],ne[M],idx;
typedef long long ll;
void add(int a,int b,int c){w[idx]=c;e[idx]=b,ne[idx]=h[a],h[a]=idx++;
}
int vis[N],dist[N],cnt[N];
bool spfa(){memset(dist,-0x3f,sizeof dist);stack<int>q;//会Tleq.push(0);vis[0]&#61;1;dist[0]&#61;0;while(q.size()){int p&#61;q.top();q.pop();vis[p]&#61;0;for(int i&#61;h[p];~i;i&#61;ne[i]){int j&#61;e[i];if(dist[j]<dist[p]&#43;w[i]){dist[j]&#61;dist[p]&#43;w[i];cnt[j]&#61;cnt[p]&#43;1;if(cnt[j]>&#61;n&#43;1)return 0;if(!vis[j]){vis[j]&#61;1;q.push(j);}}}}return 1;
}
int main(){scanf("%d%d",&n,&k);memset(h,-1,sizeof h);for(int i&#61;1;i<&#61;k;i&#43;&#43;){int a,b,x;scanf("%d%d%d",&x,&a,&b);if(x&#61;&#61;1)add(a,b,0),add(b,a,0);else if(x&#61;&#61;2)add(a,b,1);else if(x&#61;&#61;3)add(b,a,0);else if(x&#61;&#61;4)add(b,a,1);else if(x&#61;&#61;5)add(a,b,0);}for(int i&#61;1;i<&#61;n;i&#43;&#43;){add(0,i,1);//每个人至少要有一个糖果}if(!spfa())puts("-1");else {ll res&#61;0;for(int i&#61;1;i<&#61;n;i&#43;&#43;)res&#43;&#61;dist[i];printf("%lld\n",res);}return 0;
}

推荐阅读
  • 本问题涉及在给定的无向图中寻找一个至少包含三个节点的环,该环上的节点不重复,并且环上所有边的长度之和最小。目标是找到并输出这个最小环的具体方案。 ... [详细]
  • 洛谷 P4009 汽车加油行驶问题 解析
    探讨了经典算法题目——汽车加油行驶问题,通过网络流和费用流的视角,深入解析了该问题的解决方案。本文将详细阐述如何利用最短路径算法解决这一问题,并提供详细的代码实现。 ... [详细]
  • 在1995年,Simon Plouffe 发现了一种特殊的求和方法来表示某些常数。两年后,Bailey 和 Borwein 在他们的论文中发表了这一发现,这种方法被命名为 Bailey-Borwein-Plouffe (BBP) 公式。该问题要求计算圆周率 π 的第 n 个十六进制数字。 ... [详细]
  • 问题描述现在,不管开发一个多大的系统(至少我现在的部门是这样的),都会带一个日志功能;在实际开发过程中 ... [详细]
  • 本题要求计算一组正整数的最小公倍数(LCM)。输入包括多组测试数据,每组数据首先给出一个正整数n,随后是n个正整数。 ... [详细]
  • 在Qt框架中,信号与槽机制是一种独特的组件间通信方式。本文探讨了这一机制相较于传统的C风格回调函数所具有的优势,并分析了其潜在的不足之处。 ... [详细]
  • 本文详细介绍了如何在循环双链表的指定位置插入新元素的方法,包括必要的步骤和代码示例。 ... [详细]
  • 使用QT构建基础串口辅助工具
    本文详细介绍了如何利用QT框架创建一个简易的串口助手应用程序,包括项目的建立、界面设计与编程实现、运行测试以及最终的应用程序打包。 ... [详细]
  • 线段树详解与实现
    本文详细介绍了线段树的基本概念及其在编程竞赛中的应用,并提供了一个具体的线段树实现代码示例。 ... [详细]
  • 实现系统调用
    实现系统调用一、实验环境​本次操作还是基于上次编译Linux0.11内核的实验环境进行操作。环境如下:二、实验目标​通过对上述实验原理的认识,相信 ... [详细]
  • 本文探讨了如何高效地计算数组中和为2的幂的偶对数量,提供了从基础到优化的方法。 ... [详细]
  • 编译原理中的语法分析方法探讨
    本文探讨了在编译原理课程中遇到的复杂文法问题,特别是当使用SLR(1)文法时遇到的多重规约与移进冲突。文章讨论了可能的解决策略,包括递归下降解析、运算符优先级解析等,并提供了相关示例。 ... [详细]
  • 本文将深入探讨C语言中的位操作符——按位与(&)、按位或(|)和按位异或(^),通过具体示例解释这些操作符如何在位级别上对数据进行操作。 ... [详细]
  • 二维码的实现与应用
    本文介绍了二维码的基本概念、分类及其优缺点,并详细描述了如何使用Java编程语言结合第三方库(如ZXing和qrcode.jar)来实现二维码的生成与解析。 ... [详细]
  • 本文档介绍了如何使用ESP32开发板在STA模式下实现与TCP服务器的通信,包括环境搭建、代码解析及实验步骤。 ... [详细]
author-avatar
酷的带_201
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有