【模板】SPFA
来源:互联网 发布:北京大学医学网络教育 编辑:程序博客网 时间:2024/06/06 15:03
1.BFS
/* ******************* ******************* HDU 2544 最短路 ******************* ********************/#include<iostream>#include<cstdio>#include<cmath>#include<cstring>#include<climits>#include<string>#include<queue>#include<stack>#include<algorithm>using namespace std;#define rep(i,j,k)for(i=j;i<k;i++)#define per(i,j,k)for(i=j;i>k;i--)#define MS(x,y)memset(x,y,sizeof(x))typedef long long LL;const int INF=0x7ffffff;const int M=100+1;int mp[M][M];int dis[M];int vis[M];int i,j,k,n,m;void spfa(){ queue<int>q; int u; q.push(1); dis[1]=0; while(!q.empty()) { u=q.front(); q.pop(); vis[u]=0; for(i=1;i<=n;i++) if(dis[i]>dis[u]+mp[u][i]){ dis[i]=dis[u]+mp[u][i]; if(!vis[i]) vis[i]=1,q.push(i); } }}int main(){ while(~scanf("%d%d",&n,&m),n+m) { for(i=1;i<=n;i++) for(j=1;j<=n;j++){ mp[i][j]=INF; dis[i]=INF; vis[i]=0; } for(i=0;i<m;i++){ int a,b,c; scanf("%d%d%d",&a,&b,&c); mp[a][b]=mp[b][a]=c; } spfa(); printf("%d\n",dis[n]); } return 0;}
2.数组
/* ******************* ******************* HDU 1874 畅通工程续 ******************* ********************/#include<iostream>#include<cstdio>#include<cmath>#include<cstring>#include<climits>#include<string>#include<queue>#include<stack>#include<algorithm>using namespace std;#define rep(i,j,k)for(i=j;i<k;i++)#define per(i,j,k)for(i=j;i>k;i--)#define MS(x,y)memset(x,y,sizeof(x))typedef long long LL;const int INF= 100000000;const int M=200+1;int mp[M][M];int dis[M];int vis[M];int q[M];int i,j,k,n,m,sx,ex;void spfa(){ dis[sx]=0;vis[sx]=1; int f,k,u; q[0]=sx;f=0;k=1; while(f<k) { u=q[f]; for(i=0;i<n;i++){ if(dis[i]>dis[u]+mp[u][i]){ dis[i]=dis[u]+mp[u][i]; if(!vis[i]){ q[k++]=i; vis[i]=1; } } } vis[u]=0; f++; }}int main(){ while(~scanf("%d%d",&n,&m)) { for(i=0;i<n;i++) for(j=0;j<n;j++){ mp[i][j]=INF; dis[i]=INF; q[i]=vis[i]=0; } for(i=0;i<m;i++){ int a,b,c; scanf("%d%d%d",&a,&b,&c); if(c<mp[a][b])mp[a][b]=mp[b][a]=c; } scanf("%d%d",&sx,&ex); spfa(); if(dis[ex]<INF)printf("%d\n",dis[ex]); else puts("-1"); } return 0;}
0 0
- spfa模板
- spfa 模板
- SPFA模板
- SPFA 模板
- Spfa模板
- spfa---模板
- SPFA(模板)
- spfa模板
- SPFA模板
- SPFA 模板
- SPFA模板
- SPFA模板
- SPFA模板
- SPFA模板
- SPFA模板
- spfa 模板
- spfa 模板
- SPFA 模板
- 遗传学算法
- IOS缓存机制详解
- 《C++Primer》读书笔记——第10章 泛型算法
- js的工厂模式
- 【贪心】Vijos P1615 旅行
- 【模板】SPFA
- 线段树
- nyoj 1291 不是匹配
- NodeJs——文件I/O(一)
- CSS层叠样式表单
- 使用yum安装oracle的包
- 《Apache Kylin对基于相同字段值的多个维度cube建立的数据处理》
- 【文档】nginx-gridfs安装学习文档
- AsyncTask