[Aha]城市地圖

題目:詳見啊哈算法P136頁,就是城市間的最簡單的城市最短路問題。

分析:DFS跑一下即可。

代碼:

#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std ;

int e[5000][5000];
int n ;
int book[5000];
int min_n ; 

void dfs(int cur , int dis){
    if(dis>min_n) return ;
    if(cur == 5){
        if(dis<min_n) min_n = dis ;
        return ;
    }
    for(int i = 1; i <= n ; i++){
        if(book[i]==0&&e[cur][i]!=999999&&e[cur][i]!=0){
            book[i] = 1 ;
            dfs(i,dis+e[cur][i]);
            book[i] = 0 ;
        }
    }
    return ; 
}

int main(){
    freopen("in.txt","r",stdin);
    int m ,a, b ,dis;
    while(scanf("%d %d",&n,&m)!=EOF){
        min_n = 999999;
        for(int i = 1 ; i <= n ; i++){
            for(int j = 1 ; j <= m ; j++){
                if(i==j) e[i][j] = 0 ; 
                else e[i][j] = 999999 ;
            }
        }
        memset(book,0,sizeof(book));
        for(int i = 1 ; i <= m ; i++){
            scanf("%d %d %d",&a,&b,&dis);
            e[a][b] = dis ; 
        }
        book[1] = 1 ;
        dfs(1,0);
        printf("%d\n",min_n);
    }
    return 0 ;
}
發佈了52 篇原創文章 · 獲贊 0 · 訪問量 1萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章