城市地图

来源:互联网 发布:mac做app开发 编辑:程序博客网 时间:2024/06/05 14:40

                                                                  图的深度优先遍历


#include<stdio.h>#include<iostream>using namespace std;int Min=999999,book[101],n,e[1010][101];//cur是当前所在城市的编号,dis是当前已经走过的距离 void dfs(int cur,int dis){int j;if(dis>Min) return;//如果当前走过的路已经大于之前的最短路,则没必要再继续 if(cur==n){//是否到达目的地 if(dis<Min) Min=dis;return;} for(j=1;j<=n;j++){//依次尝试 if(e[cur][j]!=999999&&book[j]==0){ book[j]=1;dfs(j,dis+e[cur][j]);book[j]=0;}}return;} int main(){int i,j,m,a,b,c;cin>>n>>m;//初始化二维矩阵 for(i=1;i<=n;i++)  for(j=1;j<=n;j++)    if(i==j) e[i][j]=0;    else e[i][j]=999999;    //读入城市之间的距离     for(i=1;i<=m;i++){    cin>>a>>b>>c;    e[a][b]=c;}//从一号开始出发 book[1]=1;dfs(1,0);cout<<Min;}