这个题是要求起点到终点的最小边的最大值。注意各种数组变量的初始化。
首次尝试邻接矩阵做Bellmanford算法。。
#include<iostream>
#include<cstdio>
#include<cstring>
#include<string>
#include<map>
#include<algorithm>
#define MAXN 205
using namespace std;
int main()
{
int n,m,kase=0;
while(cin>>n>>m&&!(!n&&!m))
{
string a,b;
int v;
map<string,int> mp;
int gl[MAXN][MAXN]= {0};
int cnt=0;
for(int i=0; i<m; ++i)
{
cin>>a>>b>>v;
if(!mp[a]) mp[a]=++cnt;
if(!mp[b]) mp[b]=++cnt;
int x=mp[a],y=mp[b];
gl[x][y]=gl[y][x]=v;
}
cin>>a>>b;
int d[MAXN]={0};
int st=mp[a],ed=mp[b];
d[st]=100000;
for(int i=1; i<n; ++i)
{
for(int j=1; j<=n; ++j)
for(int k=1; k<=n; ++k)
d[j]=max(d[j],min(d[k],gl[j][k]));
}
cout<<"Scenario #"<<++kase<<endl;
cout<<d[ed]<<" tons"<<endl<<endl;
}
return 0;
}
本文介绍了一种使用邻接矩阵实现Bellman-Ford算法的方法,用于求解带负权边的最短路径问题。通过具体示例展示了如何初始化变量,并逐步更新节点之间的最短路径。

651

被折叠的 条评论
为什么被折叠?



