最短路模板。
2017-02-16 16:41
393 查看
纯粹是害怕自己忘掉记一遍。
1 Floyd计算多源最短路问题。
void floyd()
{
for(int i=1;i<=n;++i) //扫一遍中间点
{
for(int j=1;j<=n;++j)//扫一遍起点
{
for(int k=1;k<=k;++k)//扫一遍所有终点
{
if(map[j][k]>map[j][i]+map[i][k])
map[j][k]=map[j][i]+map[i][k];
}
}
}
}
2 SPFA 单源,队列
void Spfa()
{
for(int i=1;i<=n;i++)
{
dis[i]=inf;
vis[i]=0;
}
queue<int>que;
vis[start]=1; dis[start]=0;
que.push(start);
while(!que.empty())
{
int temp=que.front();
que.pop();
for(int i=1;i<=n;i++)
{
if(dis[temp]+map[temp][i]<dis[i])
{
dis[i]=map[temp][i]+dis[temp];
if(vis[i]==0)
{
vis[i]=1;
que.push(i);
}
}
}
vis[temp]=0;
}
}
3 dijkstra 这个我是最早接触的,但对我的幼小心灵造成很大的打击所以用的就很少。
void Dijkstra()
{
for(int i=1;i<=n;i++)
{
dis[i]=inf; vis[i]=0;
}
dis[start]=0;
for(int i=1;i<=n;i++)
{
int pos;int min=inf;
for(int j=1;j<=n;j++)
{
if(!vis[i]&&dis[i]<min)
{
min=dis[i];
pos=i;
}
}
vis[pos]=1;
for(int k=1;k<=n;k++)
{
if(dis[k]>dis[pos]+map[pos][k])
dis[k]=dis[pos]+map[pos][k];
}
}
}
1 Floyd计算多源最短路问题。
void floyd()
{
for(int i=1;i<=n;++i) //扫一遍中间点
{
for(int j=1;j<=n;++j)//扫一遍起点
{
for(int k=1;k<=k;++k)//扫一遍所有终点
{
if(map[j][k]>map[j][i]+map[i][k])
map[j][k]=map[j][i]+map[i][k];
}
}
}
}
2 SPFA 单源,队列
void Spfa()
{
for(int i=1;i<=n;i++)
{
dis[i]=inf;
vis[i]=0;
}
queue<int>que;
vis[start]=1; dis[start]=0;
que.push(start);
while(!que.empty())
{
int temp=que.front();
que.pop();
for(int i=1;i<=n;i++)
{
if(dis[temp]+map[temp][i]<dis[i])
{
dis[i]=map[temp][i]+dis[temp];
if(vis[i]==0)
{
vis[i]=1;
que.push(i);
}
}
}
vis[temp]=0;
}
}
3 dijkstra 这个我是最早接触的,但对我的幼小心灵造成很大的打击所以用的就很少。
void Dijkstra()
{
for(int i=1;i<=n;i++)
{
dis[i]=inf; vis[i]=0;
}
dis[start]=0;
for(int i=1;i<=n;i++)
{
int pos;int min=inf;
for(int j=1;j<=n;j++)
{
if(!vis[i]&&dis[i]<min)
{
min=dis[i];
pos=i;
}
}
vis[pos]=1;
for(int k=1;k<=n;k++)
{
if(dis[k]>dis[pos]+map[pos][k])
dis[k]=dis[pos]+map[pos][k];
}
}
}
相关文章推荐
- 最短路之弗洛伊德算法和模板
- 【最短路模板】HDU 2544
- floyd 最短路 模板
- 基础最短路(模板 spfa)
- 蓝桥网 算法训练 最短路(模板题)
- HDU 2544 最短路——简单的模板题 dijkstra
- hdu2544最短路(Dijkstra模板题)
- HD 2544 最短路 【dijkstra】 (模板题)
- 最短路(Dijkstra)Kuangbin大神的模板
- 蓝桥杯训练 最短路 (SPFA模板 vector)
- hdu 最短路模板题 java
- 最小费用流模板(Bellman-Ford算法找最短路)
- 最短路~spfa模板
- Wormholes---poj3259(最短路 spfa 判断负环 模板)
- light oj 1019【最短路模板】
- CSU-ACM2017暑期训练14-最短路 D - 输入量很大的模板题
- 最短路模板
- Floyd 模板 & [FZYZOJ 1318] 最短路
- 最短路相关模板
- 最短路(floyd/dijkstra/bellmanford/spaf 模板)