无向图最短路径搜索c语言,求无向图的最短路径C/C++/C#算法?

using System;

using System.Collections.Generic;

using System.Text;

namespace PathEst

{

public static class qu

{

public static string shortest(int[][] g, int a, int v)

//g,矩阵图。a,2起点。v,5终点。返回值,最后路径

{

int t = v;

int[] P = new int[6];//用来存储得到的最短路径

int[] D = new int[6];//用于存储由a到其它路径的长度

const int INFINITY = 65535;

int[] final = new int[6];//保存结点是否已访问过

for (int i = 0; i < 6; ++i)//初始化

{

D[i] = g[a][i];//路径长度

P[i] = a;//由此可“叶落归根”

final[i] = 0;

}

final[a] = 1;//不访问起点

for (int i = 1; i < 6; ++i)

{

int min = INFINITY;//当前的最短路径

for (int w = 0; w < 6; ++w)//取最距离a最近的点v

{

if ((final[w] == 0) && (D[w] < min))

//如果存在更短的路径,替换

{

v = w;

min = D[w];

}

}

final[v] = 1;

for (int w = 0; w < 6; ++w)

//如果v是最短路径上的点,加到P[]中

{

if ((final[w] == 0) && (min + g[v][w] < D[w]))

{

D[w] = min + g[v][w];

P[w] = v;//从a到w最近路径,是v

}

}

}

//现在,P中已存在最短路径。。。D[t],是路径长度

string r = t.ToString();

do

{

r += P[t].ToString();

t = P[t];

} while (t != a);//读出反向路径

//倒置字符串

char[] chararray = r.ToCharArray();

Array.Reverse(chararray);

return new string(chararray);

}

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值