package Graph;
import java.util.Scanner;
/**
* 城市地图,图的深度优先算法的实现
* @author Administrator
*
*/
public class Main6 {
private static int min = 999999;
private static int book[];
private static int n;
private static int e[][];
private static int m;
private static int a;
private static int b;
private static int c;
public static void main(String[] args) {
book = new int[101];
e = new int [101][101];
for(int i = 0;i<book.length;i++){
book[i] = 0;
for(int j = 0;j<e[i].length;j++){
e[i][j] = 0;
}
}
Scanner input = new Scanner(System.in);
n = input.nextInt();
m = input.nextInt();
//初始化二维矩阵
for(int i = 1;i<=n;i++){
for(int j=1;j<=n;j++){
if(i == j){
e[i][j] = 0;
}else{
e[i][j] = 99999999;
}
}
}
//读入城市之间的道路
for(int i=1;i<=m;i++)
{
a = input.nextInt();
b = input.nextInt();
c = input.nextInt();
e[a][b] = c;
}
//从1号城市出发
book[1] = 1;//标记1号城市已经在路径中
dfs(1,0);//1表示当前所在的城市编号,0表示当前已经走过的路程
System.out.printf("%d",min);
}
//cur是当前所在的城市编号,distance是当前已经走过的路程
private static void dfs(int cur, int distance) {
int j;
//如果当前走过的路程已经大于之前找到的最短的路程,则没有必要再往下尝试了,立即返回
if(distance > min)
{
return ;
}
//判断是不是已经到达了目标城市
if(cur == n)
{
if(distance < min){
min = distance;//更新最小值
}
return ;
}
//从1号城市到n号城市依次尝试
for(j = 1;j<=n;j++)
{
//判断当前城市cur到城市j是否有路,并判断城市j是否已经走过的路径中
if(e[cur][j] != 99999999 && book[j] == 0)
{
book[j] = 1;//标记城市j已经在路径中
dfs(j,distance+e[cur][j]);//从城市j出发,继续寻找目标城市
book[j] = 0;//之前一步探索完毕之后,取消对城市j的标记
}
}
return;
}
}