图(最短路径)

来源:互联网 发布:北京seo排名 编辑:程序博客网 时间:2024/05/21 22:25

如图所示:求从某一点到某一点的最短路径

dfs解题方法:

<span style="font-size:18px;">#include<stdio.h>#define MAX 999999int book[50]={0},p[50][50];int min=9999,end;int v,s;void bfs(int b,int dis)//dis是路径长度{if(b==end)//当到终点的时候,更新min{if(dis<min){min=dis;} return ;}for(int k=1;k<=v;k++){if(book[k]==0&&(p[b][k]>0&&p[b][k]<MAX)){book[k]=1;bfs(k,dis+p[b][k]);book[k]=0;//回溯(很重要)}}}int main(void){int x,y,value,begin;scanf("%d%d",&v,&s);//输入顶点和边for(int i=1;i<=v;i++)for(int j=1;j<=v;j++){p[i][i]=0;p[i][j]=MAX;}for(int k=1;k<=s;k++){scanf("%d%d%d",&x,&y,&value);//输入顶点和边和权值p[x][y]=value;}scanf("%d%d",&begin,&end);book[begin]=1; //标记第一个顶点bfs(begin,0);//开始的时候路长为 0 printf("%d\n",min);return 0;} </span>


0 0
原创粉丝点击