最短路之SPFA模板

2022-09-02 05:33:11 字數 643 閱讀 2714

一:鄰接矩陣版本spfa//如果要判斷負環的話加乙個記錄入隊的陣列就行,當入隊次數大於n的時候出現負環

int d[maxn],vis[maxn],w[maxn][maxn];  

int n;  

void spfa(int s)  

}  }  }  

二:偽鄰接表版spfa

const int inf = 0x3f3f3f3f;  

int v[m],w[m],next[m],head[n],d[n],e;//head初始化為-1,模擬鄰接表  

void addedge(int a,int b,int x)//主要如果是無向圖的話,每條邊要執行兩次這個,a,b反過來就行  

void spfa(int s)  

}  }  }  

for(int i=0; i>a>>b>>x;  

addedge(a,b,x);  

addedge(b,a,x);  

}  三:鄰接表版

[struct edge  

e[maxn];  

void init()  

void addedge(int u,int v,int x)  

void spfa(int s)  

}  }  }

最短路SPFA演算法模板

其實如果是最短路的裸題的話是不用寫這種傳參的spfa的,直接定義全域性變數就好了,但是很多題都是要求兩點甚至更多點到其他點最短路,因此加上了引數。include include include include define maxn 10005 define inf 0x3f3f3f3f using...

模板 最短路徑 SPFA

題目描述 每組資料第一行包含兩個正整數n和m 0const int maxn 205 n的上限 const int inf 1e9 資料的上限 int dp maxn maxn dp i j 第i個城市到第j個城市的距離 int vis maxn vis i 標記第i個城市是否遍歷過 int len...

最短路徑之spfa

其實就是用佇列對bellman ford進行優化 include include include include include include using namespace std static const int maxn 1000 點的數目 static const int inf 0x3f...