洛谷 P3385 負環

2021-08-21 19:51:42 字數 768 閱讀 9469

聽說這道題有好幾種做法?超神搜尋?bfs?spfa?奇怪的貪心?(管理員更新了資料,別想了qwq.可能是我太菜了,想不出吧.)

說說我的解法:我們就做普通的spfa,不要加什麼酸辣粉slf優化,會超時!!!判斷每個點進佇列的的次數,如果次數超過了n次,說明存在負環.(證明,自己想一想也許就可以了吧,如果乙個點多次被用來更新,說明有可能存在負環,而當次數超過n次,可能行就特別大)

#include

#include

#include

#include

#include

#include

using

namespace

std;

struct arrbot[10000];

bool flag;

int n,m,cnt,t,cntt[3005],dis[3005],head[3005],vis[3005];

inline

int read()

inline

void add(int a,int b,int c)

inline

void init()

inline

int spfa(int s)}}

}return0;}

int main()

if(spfa(1)) cout

<<"ye5"

cout

<<"n0"

0;}

洛谷 P3385 模板 負環

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

洛谷 P3385 模板 負環

題目鏈結 一開始沒注意到他的邊是非負就是雙向的。所以一直wa 用spfa。bfs判斷是否有乙個點進入次數超過n即可。include include include include include include define maxn 2005 using namespace std typedef...

《題解》洛谷P3385 模板 負環

題目鏈結 判斷一張圖中是否存在關於頂點1的負環 可以用spfa跑一遍,存在負環的情況就是點進隊大於n次 因為在存在負環的情況下,spfa會越跑越小,跑進死迴圈 在最差的情況下,存在的負環長度是 n 1個頂點 這麼長 顯然這是n個點長度,但不是環 這就是乙個環,n 1個點的長度 所以 很明了了,只需將...