城市地图-图的深度优先遍历

来源:互联网 发布:阿里云报价 编辑:程序博客网 时间:2024/06/05 20:02

因为这个图是有向图,无向图和有向图代码很像,当这个图是无向图的时候,需要把输入的改成map[a][b]=c ,map[b][a]=c这样就是无向的,当他是无向图的时候最短路程不是1-2-5而是1-3-5

<span style="font-size:14px;">#include <iostream>using namespace std;int visit[101];int map[101][101];int n,m,a,b,c,cur;int dis,min_=9999999;void dfs(int cur,int dis){      int i;    if(dis>min_)//如果当前的距离比最小值大立马返回        return;    if(cur==n)//如果到达目的城市    {        if(min_>dis)        {            min_=dis;        }        return;    }    for(i=1;i<=n;i++)//从当前城市cur依次看到哪个城市可以走    {        if(map[cur][i]!=9999999 && visit[i]==0)        {            visit[i]=1;            dfs(i,dis+map[cur][i]);            visit[i]=0;        }    }    }int main(){    int i,j;    cin>>n>>m;//输入有n个城市编号1到n,共有m条路走    for(i=1;i<=n;i++)    {        for(j=1;j<=n;j++)        {            if(i==j)                map[i][j]=0;            else                map[i][j]=99999999;        }    }        for(j=0;j<m;j++)        {            cin>>a>>b>>c;            map[a][b]=c;        }    visit[1]=1;    dfs(1,0);    cout<<min_;}/* 5 8 1 2 2 1 5 10 2 3 3 2 5 7 3 1 4 3 4 4 4 5 5 5 3 3*/inwi</span>


0 0
原创粉丝点击