BF算法
- bf算法的思路其实很简单,记住一句话,对所有的边进行n-1次“松弛”操作。它的核心代码只有四行。
#include <iostream>
using namespace std;
const int maxn=10001;
int dis[maxn]={0};
int u[maxn];
int v[maxn];
int w[maxn];
int n,m;
int inf=9999999;
void init()
{
for(int i=1;i<=n;i++)
{
dis[i]=inf;
}
}
int main()
{
cin>>n>>m;
int start;
cin>>start;
for(int i=1;i<=m;i++)
{
cin>>u[i]>>v[i]>>w[i];
}
init();
dis[start]=0;
for(int i=1;i<=n-1;i++)
{
for(int j=1;j<=m;j++)
{
if(dis[v[j]]>dis[u[j]]+w[j])
{
dis[v[j]]=dis[u[j]]+w[j];
}
}
}
for(int i=1;i<=n;i++)
cout<<dis[i]<<" ";
return 0;
}