hdu 1317 spfa 演算法 判斷正環

2021-08-03 20:57:21 字數 892 閱讀 4301

/*題意  最多有100個房間,每個房間裡有正能量和負能量,然後你的初始能量為100從1開始走,走到n能不能能量為正,走到每乙個房間的能量必須大於

0,輸入輸出的意思是;

乙個有n個房間,後面的n行表示

第乙個表示 房間的權,第二個 k 表示他可以連到幾個房間,後面的 k個數表示第i個房間與他相連,權為p

當乙個節點進入佇列的次數》=n次 就表示此節點在乙個負環上,然後這裡我們是要求的最大路徑,就是要求正環,當乙個節點在乙個正環上他可以一直繞,

所以當他在正環上 他的體力就是無限的。此時只需要這個圖與n聯通即可。

*/#include#include#include#include#includeusing namespace std;

#define inf 999999999

struct edge

;vectoredges;

vectorg[101];

void addedge(int x,int y,int w)//把邊儲存起來的函式

; edges.push_back(a);

g[x].push_back(edges.size()-1);

}int n;

int dis[101];

int vis[101];

int bfs()

queueq;

q.push(1);

dis[1]=100;

int b;

while(!q.empty())}}

return 0;

}int main()

}if(bfs()) printf("winnable\n");

else printf("hopeless\n");

}}

hdu4889 spfa(造資料卡spfa

題目是給了你乙個spfa slf優化的程式,然後,讓你造個資料卡掉他,其實那個slf優化根本不算是優化,只是在某些圖上可能會更好,但是可以通過直接構造圖將其由原本spfa最壞nm的複雜度卡成2 n複雜度 至於具體的,這題是曹聖 給我講的,他那裡寫的很詳細,我就直接copy了 在這個圖中,我們設計算從...

HDU1317 最長路 判斷正環

題意 有n個房間 n 100 每個房間有乙個點權 第1號房間和第n號房間權值均為0 到達該房間時會自動獲得該點權 權值可能為負,範圍是 100 100 給出一些有向邊。有乙個人,初始能量值為100,初始位置是第一號房間,要走到第n號房間,且路途中不得使身上能量值小於或等於0 必須大於0 能到達第n個...

HDU 3790 最短路徑 spfa

給你n個點,m條無向邊,每條邊都有長度d和花費p,給你起點s終點t,要求輸出起點到終點的最短距離及其花費,如果最短距離有多條路線,則輸出花費最少的。input 輸入n,m,點的編號是1 n,然後是m行,每行4個數 a,b,d,p,表示a和b之間有一條邊,且其長度為d,花費為p。最後一行是兩個數 s,...