SPFA算法
来源:互联网 发布:软件教育现代化期刊 编辑:程序博客网 时间:2024/05/13 11:23
#include <cstdio>#include<cstring>#include<cstdlib>#include<algorithm>#include<queue>using namespace std;const int maxn=1e9;int n,m,tol,hed[10000],dis[10000],vis[10000],cnt[10000];struct node{ int f; int t; int v; int next;} edge[2*10000];queue<int>q;int SPFA(int s){ while(!q.empty()) { q.pop(); } for(int i=1; i<=n; i++) { dis[i]=maxn; vis[i]=0; cnt[i]=0; } dis[s]=0; vis[s]=1; q.push(s); while(!q.empty()) { int temp=q.front(); q.pop(); vis[temp]=0; for(int i=hed[temp]; i!=-1; i=edge[i].next) { int e=edge[i].t; if(dis[e]>dis[temp]+edge[i].v) { dis[e]=dis[temp]+edge[i].v; if(!vis[e]) { if(++cnt[e]==n) return 0; vis[e]=1; q.push(e); } } } } return 1;}void addedge(int f,int t,int v){ edge[tol].t=t; edge[tol].f=f; edge[tol].v=v; edge[tol].next=hed[f]; hed[f]=tol++;}int main(){ while(~scanf("%d%d",&n,&m)) { tol=1; memset(hed,-1,sizeof(hed)); for(int i=1; i<=m; i++) { int f,t,v; scanf("%d%d%d",&f,&t,&v); addedge(f,t,v); addedge(t,f,v); } if(!SPFA(1)) printf("NO\n"); else { for(int i=1; i<=n; i++) { printf("%d %d\n",i,dis[i]); } } } return 0;}
0 0
- SPFA 算法
- SPFA 算法
- SPFA算法
- SPFA算法
- SPFA算法
- SPFA算法
- Spfa算法
- SPFA算法
- SPFA 算法
- Spfa算法
- SPFA算法
- SPFA算法
- SPFA算法
- SPFA算法
- spfa算法
- SPFA算法
- SPFA算法
- SPFA算法
- 数据库锁表的分析与解决(二)
- ROS_PCL_第一个PCL程序
- 华为内部如何实施微服务架构?基本就靠这5大原则
- Android 用RxJava模拟一个EventBus ———RxBus
- 面试经历
- SPFA算法
- IDEA 导出jar包,并且将第三方jar包包含进项目中或者在外部引用,不包含进项目中
- spring中各种经典的注解
- 编写第一个NDK程序
- 数据库锁表的分析与解决(三)
- h5开发
- caffe源码分析--SyncedMemory类
- wampserver配置多站点
- CSS特殊符号的特殊性