本文通過一道oj題目來驗證下面超連結中有關spfa演算法的內容
spfa演算法原理:
#include#includeusing namespace std;
vector< pair> graph[100010];
int arrdis[100010];
bool flag[100010];
int n,m,s,t;
queueqe;
int main()
}//disk=disk>disn?disn:disk;
} }printf("%d\n",arrdis[t-1]);//輸出題目要求的最短距離
return 0;
}
上述**通過了oj,但在通過之前遇到多次tlm的問題,即超時。
在跟師兄討論後,發現是輸入資料部分占用了大量時間。在scanf語句後面使用fflush函式是想避免回車對輸入的影響,這個問題之前確實有過,但是在本例的oj中不會遇到。
所以,以後使用scanf時應該注意,不需要將過去習慣中的fflush函式新增。事實證明,fflush函式還是很耗時的,不加它t=143ms,加上它t=1450ms,這個數字是oj給的。
另外乙個就是大的陣列應該定義為全域性變數,如果定義為區域性變數會出現 stack overflow的問題,這主要跟不同的變數所在的區域有關係。區域性變數在棧區定義,而全域性變數在堆區。
SPFA演算法的廣度優先實現
廣度優先搜尋 queue實現的spfa演算法 include using namespace std define mod 1e9 7 define n 100 define inf 0x3f3f3f3f const double pi atan 1.0 4.0 typedef long long ...
spfa演算法鄰接表實現
東信杯 廣西大學第一屆程式設計競賽 同步賽 題意 在有向圖選取一條路徑使得路徑中邊權乘積最短,其中邊 權必定為2的正整數次冪。考慮最短路模型是邊權相加,那麼我們只需要將乘法轉化為加法 也就是將邊權對2取對數,再計算最短路得到最短長度ans,最後 我們的答案就是2 ans 1e9 7 最後計算冪時會溢...
最短路 SPFA演算法實現
感謝caioj scy老師通俗易懂的講解,非常可惜小白菜要登出了,學oi太晚,還妹有來得及做多少裡面的題,遺憾。題目是caioj1088 include include using namespace std struct bian 表示有向邊的結構體,構建編目錄 bian a 210000 int...