/*
* File name : graph_ford.cpp
* Function : 图的最短路径 Ford算法 解决负权问题
* Created on : 2016年6月3日
* Author : beijiwei@qq.com
* Copyright : 欢迎大家和我一起交流学习,转载请保持源文件的完整性。
任何单位和个人不经本人允许不得用于商业用途
input:
5 5
1 2 -3
1 5 5
2 3 2
3 4 3
4 5 2
*/
#include <cstdio>
#include <iostream>
using namespace std;
#define MAX 10
#define INF 99999
int main(int argc, char** argv)
{
int dis[MAX], start[MAX], end[MAX], weight[MAX];
int vertex_num,edge_num;
int i=0,k=0;
freopen("input.txt", "r", stdin);
cout<<"请输入图的顶点个数和边个数: "<<endl;
cin>>vertex_num>>edge_num;
for( i=1;i <= edge_num;i++)
{
cout<<"请输入第 "<<i<<" 条边的开始顶点,结束顶点和权值:"<<endl;
cin>>start[i]>>end[i]>>weight[i];
}
for( i=0;i <=vertex_num;i++)
{
dis[i]=INF;
}
dis[1]=0;
/*************************************************************************************/
for(k=1;k<vertex_num;k++)
{
for(i=1;i<= edge_num;i++)
{
if( dis[ end[i] ] > dis[ start[i] ]+weight[i] )
{
dis[ end[i] ] = dis[ start[i] ]+weight[i];
}
}
}
/*************************************************************************************/
for(i=1;i<vertex_num; i++)
{
cout<<"顶点 1 至 顶点 "<<i<<"的最短路径是 "<<dis[i]<<endl;
}
return 0;
}
图的最短路径 Ford算法 解决负权问题
最新推荐文章于 2024-02-05 21:20:04 发布