当前位置: 首页 > news >正文

P3385 【模板】负环

P3385 【模板】负环 - 洛谷

题目描述

给定一个 n 个点的有向图,请求出图中是否存在从顶点 1 出发能到达的负环。

负环的定义是:一条边权之和为负数的回路。

输入格式

本题单测试点有多组测试数据。

输入的第一行是一个整数 T,表示测试数据的组数。对于每组数据的格式如下:

第一行有两个整数,分别表示图的点数 n 和接下来给出边信息的条数 m。

接下来 m 行,每行三个整数 u,v,w。

  • 若 w>0,则表示存在一条从 u 至 v 边权为 w 的边,还存在一条从 v 至 u 边权为 w 的边。
  • 若 w<0,则只表示存在一条从 u 至 v 边权为 w 的边。

输出格式

对于每组数据,输出一行一个字符串,若所求负环存在,则输出 YES,否则输出 NO

输入输出样例

输入 #1

2
3 4
1 2 2
1 3 4
2 3 1
3 1 -3
2 3
1 2 3
2 3 4
3 1 -8

输出 #1

NO
YES

说明/提示

数据规模与约定

对于全部的测试点,保证:

  • 1≤n≤2×103
  • 1≤m≤3×103
  • 1≤u,v≤n
  • −104≤w≤104
  • 1≤T≤10

提示

请注意,m 不是图的边数。

思路:
代码如下:

#include <iostream>
#include <algorithm>
#include <cmath>
#include <queue>
#include <cstring>
using namespace std;
typedef long long ll;
const ll N = 2e5 * 5 + 5;
ll tot = 0;
ll n, m, s;
struct Edge{
	ll next,to,w;
}e[N];
ll head[N],dis[N]; 
void add(ll u,ll v,ll w)
{
	tot++;
	e[tot].next = head[u];
	e[tot].to = v;
	e[tot].w = w;
	head[u] = tot;
}
void spfa()
{
    queue<ll> q;
    q.push(s);
    memset(dis,0x3f,sizeof dis);
    dis[s]=0;
    while(!q.empty())
	{
        ll pos = q.front();
        q.pop();
        ll u = head[u];
        while(u != -1)
        {
        	ll to = e[u].to;
        	ll w = e[u].w;
        	if(dis[to] > w + dis[pos])
        	{
        		dis[to] = w + dis[pos];
        		q.push(to);
			}
		}
    }
}
int main()
{
    cin >> n >> m >> s;
    for(ll i = 1 ; i <= m ; i++)
	{
        ll u,v,w;
        cin >> u >> v >> w;
        add(u,v,w);
    }
    spfa();
    return 0;
}

http://www.dtcms.com/a/51816.html

相关文章:

  • 阿里云oss开发实践:大文件分片、断点续传、实时进度 React+Node+Socket.IO
  • Windows 图形显示驱动开发-WDDM 3.2-本机 GPU 围栏对象(二)
  • 5c/c++内存管理
  • 【DeepSeek 】学习编程的利器:DeepSeek 使用指南
  • react中如何使用使用react-redux进行数据管理
  • FastGPT 引申:奥运选手知识图谱构建与混合检索应用
  • arthas快速入门
  • 后端架构模式之-BFF(Backend-For-Frontend)
  • 康谋分享 | 3DGS:革新自动驾驶仿真场景重建的关键技术
  • RFID无线测温技术助力环网柜智能运维升级
  • 微信小程序接入deepseek
  • 道可云人工智能每日资讯|《奇遇三星堆》VR沉浸探索展(淮安站)开展
  • 字符函数和字符串函数
  • 如何排查服务器内存泄漏问题
  • Redis|集群 Cluster
  • 实时云渲染技术布道 | 像素流送技术与商业化实时云渲染产品的指标对比
  • CVPR2025——重建能力vs生成能力《Reconstruction vs. Generation》论文解析
  • 四、数据存储
  • 十二、Redis Cluster(集群)详解:原理、搭建、数据分片与读写分离
  • 对ArrayList中存储的TreeNode的排序回顾
  • Android动态适配中英文开发指南
  • 文件上传漏洞:upload-labs靶场11-20
  • OCPP扩展机制与自定义功能开发:协议灵活性设计与实践 - 慧知开源充电桩平台
  • Matlab读取二维数据的csv文件,并绘制为一维的折线图
  • springboot集成maven多模块开发
  • 从零开始用react + tailwindcss + express + mongodb实现一个聊天程序(十一) 实现服务端和客户端socketio 连接
  • Loki+Promtail+Grafana监控K8s日志
  • ubuntu20.04 安装离线版docker-20.10.0
  • C语言_数据结构总结2:动态分配方式的顺序表
  • MariaDB Galera 原理及用例说明