正常spfa中加入time陣列,迴圈判斷乙個點是否入隊並更新了n次以上注意是 > n!!其餘的沒有什麼問題
擴充套件的還有,尋找所有負環上的點,這個可以在spfa中time 發現負環的時候,對那個點進行dfs操作,找到所有的負環上的點即可
void dfs(int u)
}
/*
spfa負環的判斷
*/#include #include #include #include #include #define inf (1 << 29)
using namespace std;
typedef long long ll;
const int maxn = 600;
const int maxm = 3e3;
int id[maxn],cnt;
struct nodee[maxm * 2];
int dis[maxn];
int vis[maxn];
int time[maxn];
queueq;
void init()
void add(int from,int to,int cost)
int spfa(int s,int n)}}
}return 1;
}int main()
for(int i = 1;i <= k;i++)
int op = spfa(1,n);
if(op)
printf("no\n");
else
printf("yes\n");
}return 0;
}
SPFA判斷負環
說明一下,這個例題用下面的方法是過不了的,只能過掉25分因為資料加強了,而我不會寫bfs版spfa判負環 但是我覺得會dfs版的就行了,反正對於隨機資料dfs版的絕對吊打bfs版的 只不過這道題的資料不是隨機的,是有人惡意新增的 我們利用dfs強行進行鬆弛操作 我感覺已經不能叫他spfa了 如果在一...
關於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,...