当前位置: 首页 > 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;
}

相关文章:

  • 阿里云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的排序回顾
  • 新任重庆市垫江县委副书记刘振已任县政府党组书记
  • 民间打拐志愿者上官正义遭人身安全威胁,杭州公安:已立案
  • 广西壮族自治区党委副书记、自治区政府主席蓝天立接受审查调查
  • 马上评|训斥打骂女儿致死,无暴力应是“管教”底线
  • 既是工具又是食物,可食用机器人开启舌尖上的新科技
  • 特朗普再提“接管”加沙,要将其变为“自由区”