#include <bits/stdc++.h>
using namespace std;
int mi=999999,book[101],n;
int point[101][101];
void dfs(int cur,int dis){
if(dis>mi) return;
if(cur==n){
if(dis<mi)
mi=dis;
return;
}
for(int i=1;i<=n;i++){
if(point[cur][i]!=-1 && book[i]==0){
book[i]=1;
dfs(i,dis+point[cur][i]);
book[i]=0;
}
}
return;
}
int main(){
int m;
cin>>n>>m;
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
if(i==j)
point[i][j]=0;
else
point[i][j]=-1;
}
}
int a,b,c;
for(int i=1;i<=m;i++){
cin>>a>>b>>c;
point[a][b]=c;
}
book[1]=1;
dfs(1,0);
cout<<mi;
return 0;
}
/*
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
9
*/
城市地图(图的深度优先遍历)
最新推荐文章于 2021-05-24 09:25:14 发布