SPFA算法模板

来源:互联网 发布:地图制图软件 编辑:程序博客网 时间:2024/06/05 23:28
#include<iostream>#include<queue>#include<string.h>#include<stdlib.h>#define INF 99999999using namespace std;int map[50][50];int n,k;int vis[55];int pre[55];void SPFA(int s){int q,i,j;queue<int> Q;memset(vis,0,sizeof(vis));memset(pre,0x3F,sizeof(pre));pre[s]=0;vis[s]=1;Q.push(s);while(!Q.empty()){q=Q.front();Q.pop();for(i=1;i<=n;i++){if(pre[q]+map[q][i] < pre[i]){pre[i]=pre[q]+map[q][i];if(vis[i]==0){Q.push(i);vis[i]=1;}}}vis[q]=0;}}int main(){int i,j,tx,ty,tt;cin>>n>>k;for(i=1;i<=n;i++)for(j=1;j<=n;j++)if(i==j) map[i][j]=0;else map[i][j]=INF;for(i=0;i<k;i++){cin>>tx>>ty>>tt;map[tx][ty]=map[ty][tx]=tt;}SPFA(1);for(i=1;i<=n;i++)printf("%d ",pre[i]);printf("\n");return 0;}

0 0
原创粉丝点击