洛谷 3385 負環

2022-05-25 19:36:15 字數 1248 閱讀 2548

暴力列舉/spfa/bellman-ford/奇怪的貪心/超神搜尋

尋找乙個從頂點1所能到達的負環,負環定義為:乙個邊權之和為負的環。

第一行乙個正整數t表示資料組數,對於每組資料:

第一行兩個正整數n m,表示圖有n個頂點,m條邊

接下來m行,每行三個整數a b w,表示a->b有一條權值為w的邊(若w<0則為單向,否則雙向)

共t行。對於每組資料,存在負環則輸出一行"ye5"(不含引號),否則輸出一行"n0"(不含引號)。

輸入 #1複製

2

3 41 2 2

1 3 4

2 3 1

3 1 -3

3 31 2 3

2 3 4

3 1 -8

輸出 #1複製

n0

ye5

n\leq 2000n≤2000

m\leq 3000m≤3000

-10000\leq w\leq 10000−10000≤w≤10000

t\leq 10t≤10

建議複製輸出格式中的字串。 本題資料感謝@negiizhao的精心構造,請不要使用玄學演算法 本題資料有更新

題解:藍題不難系列……spfa判負權環啦。貌似可以水過去

#include#include

#include

#include

#include

#include

#include

#include

using

namespace

std;

const

int n=30005

;const

int m=200010

;int t,st=1

;int

cntt,n,m;

bool

flag,v[n];

intd[n],cnt[n];

inthead[n],tot;

struct

nodee[m];

void add(int x,int y,int

z)bool

spfa()}}

}return0;

}int

main()

if(spfa()) puts("

ye5"

);

else puts("n0"

); }

}

洛谷 3385 模板 負環

一道判斷負環的模板題。這裡主要介紹三種判斷負環的方法。1.bfs spfa方法a 我們可以通過記錄每個點的入隊次數來判斷負環是否存在,不難看出 乙個點的入隊次數一旦超過n次,則圖中一定有負環存在。效率不高,不再提供 2.bfs spfa方法b 我們可以記錄每個點到源點最短路上經過了幾個點,一旦超過n...

洛谷 P3385 負環

聽說這道題有好幾種做法?超神搜尋?bfs?spfa?奇怪的貪心?管理員更新了資料,別想了qwq.可能是我太菜了,想不出吧.說說我的解法 我們就做普通的spfa,不要加什麼酸辣粉slf優化,會超時 判斷每個點進佇列的的次數,如果次數超過了n次,說明存在負環.證明,自己想一想也許就可以了吧,如果乙個點多...

洛谷 P3385 模板 負環

暴力列舉 spfa bellman ford 奇怪的貪心 超神搜尋 輸入格式 第一行乙個正整數t表示資料組數,對於每組資料 第一行兩個正整數n m,表示圖有n個頂點,m條邊 接下來m行,每行三個整數a b w,表示a b有一條權值為w的邊 若w 0則為單向,否則雙向 輸出格式 共t行。對於每組資料,...