SPFA———【模板】单源最短路径、租用游艇
2017-10-13 20:05
344 查看
题目来源
洛谷P3371 【模板】单源最短路径https://www.luogu.org/problem/show?pid=3371
洛谷P1359 租用游艇
https://www.luogu.org/problem/show?pid=1359
思路
SPFA模板题用被更新(缩短)了到S点的距离的点pos更新pos可到达的点到S点的距离
队列优化
代码(C++)[【模板】单源最短路径]
#include <cstdio> #include <queue> #include <bitset> using namespace std; bitset<10010> in; queue<int> q; int n,m,s,u,v,w,cnt=0,pos,k,dis[10010]; int he[10010],en[500010],ne[500010],len[500010]; inline void add(); int main() { scanf("%d%d%d",&n,&m,&s); for(int i=1;i<=m;++i) scanf("%d%d%d",&u,&v,&w),add(); for(int i=1;i<=n;++i) dis[i]=2147483647; dis[s]=0; in[s]=1; q.push(s); while(!q.empty()) { pos=q.front(); q.pop(); in[pos]=0; k=he[pos]; while(k!=0) { if(dis[pos]+len[k]<dis[en[k]]) { dis[en[k]]=dis[pos]+len[k]; if(in[en[k]]==0) q.push(en[k]); in[en[k]]=1; } k=ne[k]; } } for(int i=1;i<=n;++i) printf("%d ",dis[i]); return 0; } inline void add() { ++cnt; en[cnt]=v; len[cnt]=w; ne[cnt]=he[u]; he[u]=cnt; }
代码(C++)[租用游艇]
#include <cstdio>#include <queue>
#include <bitset>
using namespace std;
bitset<210> in; queue<int> q;
int n,s,u,v,w,cnt=0,pos,k;
int he[210],he1[210],dis[210],ans=0;
struct way{int en,ne,len;}p[40010];
inline void add();
int main()
{
scanf("%d",&n);
for(u=1;u<=n;++u)
{
dis[u]=2147483647;
for(v=u+1;v<=n;++v)
scanf("%d",&w),add();
}
s=1; dis[s]=0; in[s]=1; q.push(s);
while(!q.empty())
{
pos=q.front(); q.pop(); in[pos]=0;
k=he[pos];
while(k!=0)
{
if(dis[pos]+p[k].len<dis[p[k].en])
{
dis[p[k].en]=dis[pos]+p[k].len;
if(in[p[k].en]==0)
q.push(p[k].en);
in[p[k].en]=1;
}
k=p[k].ne;
}
}
printf("%d",dis
);
return 0;
}
inline void add()
{
p[++cnt].en=v; p[cnt].len=w;
p[cnt].ne=he[u]; he[u]=cnt;
}
相关文章推荐
- [洛谷]P3371 单源最短路径模板 SPFA
- luoguP3371 【模板】单源最短路径(SPFA)
- [模板]-单源最短路径-SPFA
- 【20171109】Luogu P3371 【模板】单源最短路径--SPFA
- P3371 【模板】单源最短路径 SPFA优化 dijkstra堆优化
- 单源最短路径Dijkstra、BellmanFord、SPFA【模板】
- 【模板】Spfa单源最短路径
- 洛谷P3371 【模板】单源最短路径
- SPFA单源最短路径
- 解题报告-HDOJ-1874(单源最短路径——SPFA)
- 单源最短路径算法 Bellman-Ford && SPFA 及 最短路算法统一归纳
- 单源最短路径算法 Bellman-Ford && SPFA 及 最短路算法统一归纳
- 洛谷 P3371 【模板】单源最短路径
- 洛谷P3371 【模板】单源最短路径
- [洛谷]P3371 单源最短路径模板-bell
- luoguP3371【模板】单源最短路径(Dijkstra+优先队列优化)
- P3371 【模板】单源最短路径
- [洛谷]P3371 单源最短路径模板 Dijkstra
- 单源最短路径:Dijkstra 算法 Bellman_Ford 算法 SPFA 算法
- 普及练习场 普及常见模板 【模板】单源最短路径