- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Cdijkstra算法最短路径迪杰斯特拉
#include iostream.h //最短路径的输出部分参照的是曲文的#include fstream.h#include string.h#define Max_num 40#define Longest 100000#define TRUE 1#define FALSE 0#define ERROR 0#define OK 1ifstream Input(graph.txt);typedef int Status;typedef struct{int num;char name[50];char info[100];}VertexType;typedef struct{VertexType vexs[Max_num];//顶点向量int arcs[Max_num][Max_num];int vexnum,arcnum; //邻接矩阵}AMGraph;Status CreateGraph(AMGraph *G,int n, int m){//构造图,n为顶点数目,m为边数int i,j,k,f,w,a,b;VertexType v1,v2;for(i=1;i=n;i++){//输入顶点信息G-vexs[i].num=i;InputG-vexs[i].nameG-vexs[i].info;}for(i=1;i=n;i++)//初始化邻接矩阵for(j=1;j=n;j++)G-arcs[i][j]=Longest;for(k=0;km;k++){//从文件读入边的信息Inputv1.namev2.namew;for(f=1;f=n;f++)if(strcmp(v1.name,G-vexs[f].name)==0)a=G-vexs[f].num;for(f=1;f=n;f++)if(strcmp(v2.name,G-vexs[f].name)==0)b=G-vexs[f].num;G-arcs[a][b]=w;G-arcs[b][a]=G-arcs[a][b];}return OK;}void viewschool(AMGraph *G){int m;cout请输入要查询的景点代号:;cinm;coutendl;coutG-vexs[m].nameG-vexs[m].infoendl;}void Dijkstra(AMGraph *G,int v1 ,int v2,int n)//用Dijkstra算法求有向图G的v1顶点到其他顶点v的最短路径Path[v]及其距离Dist[v]//S[v]为真当且仅当v属于S,即已求得从vl到v的最短路径{int Path[Max_num];int S[Max_num];int D[Longest];int w,v;//n=G-vexnum;for(v=1;v=n;v++){S[v]=FALSE;D[v]=G-arcs[v1][v];if(D[v]Longest) Path[v]=v1;elsePath[v]=0;}S[v1]=TRUE;D[v1]=0;for (int i=2;i=n;i++){long min=Longest;for( w=1;w=n;w++)if(!S[w]D[w]min){v=w;min=D[w];}S[v]=TRUE;for( w=1;w=n;++w)if (!S[w]D[v]+G-arcs[v][w]D[w]){D[w]=D[v]+G-arcs[v][w];Path[w]=v;}}cout 路径长度 D[v2]endl;v=Path[v2];VertexType result[20];//定义一个数组按顺序存放要输出的景点名称strcpy(result[0].name,G-vexs[v2].name);int k=1;//控制输出时候的下标while(v){strcpy(result[k].name,G-vexs[v].name);k++;v=Path[v];}for(int p=k-1;p=0;p--){if(p==0)coutresult[p].name;elsecoutresult[p].name-;}coutendl; }int main(){//freopen(gragh.txt,r);AMGraph *G;G=new AMGraph;//VertexType view,view2;int vn,an,m,a,b;char ch;Inputvnan;CreateGraph(G,vn,an);coutendlendl;cout***************************欢迎来到北京林业大学***************************;coutendl;cout\t\t您可以参观以下景点:endl;cout\t\t1.
原创力文档


文档评论(0)