SPFA判斷負環

2022-02-23 13:08:39 字數 1028 閱讀 4970

說明一下,這個例題用下面的方法是過不了的,只能過掉25分因為資料加強了,而我不會寫bfs版spfa判負環

但是我覺得會dfs版的就行了,反正對於隨機資料dfs版的絕對吊打bfs版的

只不過這道題的資料不是隨機的,是有人惡意新增的

我們利用dfs強行進行鬆弛操作(我感覺已經不能叫他spfa了)

如果在一條路徑上乙個點被重複訪問過了,那就是說明出現了負環

輸出ye5就行了

#include #include 

#include

#include

const

int maxnode = 2007

;const

int maxedge = 3007*2

;using

namespace

std;

intx, f;

char

c;inline

intread()

while (c >= '

0' && c <= '9'

)

return x *f;

}int

t, n, m, u[maxedge], v[maxedge], w[maxedge];

intfirst[maxnode], nur[maxedge], dis[maxnode];

bool

vis[maxnode], book;

inline

void addedge(int f, int

i) int

k;inline

void spfa(int

s) k =nur[k];

}vis[s] = 0;}

intmain()

}for(int i=1; i<=n&&!book; i++)

spfa(i);

(book)?(puts("

ye5")):(puts("n0"

)); }

return0;

}

關於spfa 判斷負環

判斷給定的有向圖中是否存在負環。利用spfa 演算法判斷負環有兩種方法 1 spfa 的dfs 形式,判斷條件是存在一點在一條路徑上出現多次。2 spfa 的bfs 形式,判斷條件是存在一點入隊次數大於總頂點數。如下 法 1 spfa 的dfs 形式 include include include ...

P3385 模板 負環 spfa判斷負環

p3385 模板 負環 暴力列舉 spfa bellman ford 奇怪的貪心 超神搜尋 尋找乙個從頂點1所能到達的負環,負環定義為 乙個邊權之和為負的環。輸入格式 第一行乙個正整數t表示資料組數,對於每組資料 第一行兩個正整數n m,表示圖有n個頂點,m條邊 接下來m行,每行三個整數a b w,...

最短路專題 spfa判斷負環

題目大意 有多種匯幣,匯幣之間可以交換,這需要手續費,當你用100a幣交換b幣時,a到b的匯率是29.75,手續費是0.39,那麼你可以得到 100 0.39 29.75 2963.3975 b幣。問s幣的金額經過交換最終得到的s幣金額數能否增加 貨幣的交換是可以重複多次的,如果有乙個環使得某種貨幣...