bool SPFA(int s)
{
int cnt=0;
memset(dis,0x3f,sizeof(dis));
queue<int> q;
q.push(s);
vis[s]=1;dis[v]=0;
while(!q.empty())
{
int u=q.front();q.pop();
vis[u]=0;
for(int i=0;i<g[u].size();i++)
{
int v=g[u][i].v,w=g[u][i].w;
if(dis[v]>dis[u]+w)
{
dis[v]=dis[u]+w;
cnt[v]=cnt[u]+1;
if(cnt[v]>=n) return true;//有負環
if(!vis[v])
{
q.push(v);
vis[v]=1;
}
}
}
}
return false;
}
void dijkstra(int s)
{
memset(dis,0x3f,sizeof(dis));
priority_queue<pair<int,int>,vector<pair<int,int> >,greater<pair<int,int> > > q;
q.push({0,s});
dis[s]=0;
while(!q.empty())
{
int u=q.top().second;q.pop();
if(vis[u]) continue ;
vis[u]=1;
for(int i=0;i<g[u].size();i++)
{
int v=g[u][i].v,w=g[u][i].w;
if(dis[v]>dis[u]+w)
{
dis[v]=dis[u]+w;
q.push({dis[v],v});
}
}
}
}
SPFA && dijkstra 模版
相關文章
- SPFA演算法演算法
- spfa最佳化
- 模版
- POJ 1511-Invitation Cards(SPFA)
- 最短路(DJsktra,spfa,flyd).mdJS
- 迪傑斯特拉與spfa
- SPFA和鏈式前向星
- Dijkstra演算法演算法
- Dijkstra 啦啦啦
- 最短路之Dijkstra
- POJ 2253 Frogger(Floyd Dij Spfa變形)
- SPFA演算法模板(C/C++)演算法C++
- 圖論-Dijkstra最短路圖論
- BFS和Dijkstra結合
- 【模版】線段樹
- 最短路-樸素版Dijkstra演算法&堆優化版的Dijkstra演算法優化
- 最短路徑(dijkstra 與 Floyd)
- 最短路dijkstra演算法演算法
- 最短路 - Dijkstra 演算法演算法
- dijkstra 複雜度證明複雜度
- 貪心演算法Dijkstra演算法
- 小程式 模版訊息
- HTML郵件模版分享HTML
- 搭建flutter框架模版常用Flutter框架
- ACM演算法模版ACM演算法
- 模版方法設計模式設計模式
- springboot模版thymeleaf+freemarkerSpring Boot
- 最短路-SPFA演算法&Floyd演算法演算法
- Pintia 天梯地圖 dijkstra進階地圖
- 圖的最短路徑(Dijkstra | Floyd)
- CI 框架整合 Smarty 模版引擎框架
- 必備知識點 模版
- 設計模式——模版方法模式設計模式
- android studio模版功能簡介Android
- 【模版】快速讀入/輸出
- java Freemarker 模版引擎工具類Java
- POJ1847 Tram【Dijkstra+思維】
- 最短路徑之Dijkstra演算法演算法