shortest path faster algorithm,即佇列優化的bellman-ford演算法,最壞情況下時間複雜度 o(n
m)
o(nm)
o(nm
),好像只能在負權圖里用,不然會被卡死。
例題:p3371 【模板】單源最短路徑(弱化版)
就是bfs的原理
#include
using
namespace std;
typedef
long
long ll;
typedef
unsigned
long
long ull;
typedef pair<
int,
int> pii;
typedef vector<
int> vi;
const
int inf =
0x7fffffff
;const
int maxn =
1e5+9;
inline
intread()
while
(isdigit
(ch)
)return f * data;
}int cnt_e;
const
int maxm =
5e5+9;
struct edge
e[maxm]
;int dis[maxn]
, vis[maxn]
, head[maxm]
;void
add(
int from,
int to,
int dis)
int n, m, s;
void
spfa()
q.push
(s);
dis[s]=0
, vis[s]=1
;while
(!q.
empty()
)}}}
}int
main()
spfa()
;for
(int i =
1; i <= n;
++i)
cout << dis[i]
<<
' ';
//fclose(stdin);
//fclose(stdout);
return0;
}
鏈式前向星存的圖,原理就是頭插法的靜態鍊錶。
spfa判負環,如果存在負環就會一直鬆弛下去,所以當到某個點的最短路經過了不少於 n
nn 個點,那說明一定出現了負環。
例題:p3385 【模板】負環
#include
using
namespace std;
typedef
long
long ll;
typedef
unsigned
long
long ull;
typedef pair<
int,
int> pii;
typedef vector<
int> vi;
const
int inf =
0x3f3f3f3f
;inline
intread()
while
(isdigit
(ch)
)return f * data;
}const
int maxn =
2e3+10;
const
int maxm =
6e3+10;
int n, m, head[maxn]
, tot, dis[maxn]
, vis[maxn]
, cnt[maxn]
;struct edge
e[maxm]
;queue<
int> q;
void
reset()
void
add(
int u,
int v,
int w)
bool
spfa()
}}}return
false;}
intmain()
puts
(spfa()
?"yes"
:"no");
}//fclose(stdin);
//fclose(stdout);
return0;
}
圖論要學的新知識實在是太多了 2020暑期實習 總結
以下大概按投遞順序排列 阿里巴巴,一面掛 微眾銀行,未面試 網易網際網路,未面試 網易互娛,平台開發offer thoughtworks,一面掛 華為,二面掛 浪潮集團,軟體開發offer 小公尺,未筆試,未面試 oppo,未筆試,未面試 intel,未筆試,未面試 郵政儲蓄銀行軟體中心,更新 5月...
ACM暑期訓練總結
為期六周的暑期集訓已經結束了,但這乙個暑假確實是上學以來最有意義的暑假,它帶給我的不僅是知識上的提高,更多的是學習方法上的提高,對程式設計的理解與興趣以及對自我更加清醒的認識。以前寫c 總結報告的時候,貌似或多或少都有一點應付的意思。基本上都是知識點加遇到的困難加幾段莫名其妙的雞湯 當然,只喝了幾天...
2017暑期訓練小結
新一次的noip即將在11月11號舉行,這一次的noip對我們也是十分重要的,畢竟是初中階段的最後一次noip了,也應該給自己的初中oi乙個完美的結束。這一次的noip我們這個暑假要努力的練習,但是也應該不止練習。首先,我們應該好好地分專題做題。我打算這一暑假及開學後到noip之前的這一階段,按這樣...