/*队列优化的Bellman-Ford算法*/
#include <bits/stdc++.h>
using namespace std;
int main(){
int u[8],v[8],w[8];
int first[6],next[8];
int dis[6]={0},book[6]={0};
int inf=9999999;
int n,m;
cin>>n>>m;
for(int i=1;i<=n;i++){
dis[i]=inf;
}
dis[1]=0;
for(int i=1;i<=n;i++){
first[i]=-1;
}
for(int i=1;i<=m;i++){
cin>>u[i]>>v[i]>>w[i];
next[i]=first[u[i]];
first[u[i]]=i;
}
int que[101];
int head=1,tail=1;
que[tail]=1;
tail++;
book[1]=1;
int k;
while (head<tail){
k=first[que[head]];
while (k!=-1){
if(dis[v[k]]>dis[u[k]]+w[k]){
dis[v[k]]=dis[u[k]]+w[k];
if(book[v[k]]==0){
que[tail]=v[k];
tail++;
book[v[k]]=1;
}
}
k=next[k];
}
book[que[head]]=0;
head++;
}
for(int i=1;i<=n;i++){
cout<<dis[i]<<" ";
}
return 0;
}
基于队列优化的Bellman-Ford算法
最新推荐文章于 2021-02-09 12:31:23 发布