找了好久,没看出来
#include<iostream>
#include<cstdio>
#include<cmath>
#include<string>
#include<cstring>
#include<algorithm>
#include<bits/stdc++.h>
using namespace std;
int n, m, a[60], b[60], c[60], d[60], t1, t;
void DFS(int x, int y){//x是景点编号, y是总路程
for(int k = 1;k <= m;k++){
if(a[k] == x){
if(d[b[k]] == 0){
// d[a[k]] = 1;
d[b[k]] = 1;//标记对面已访问
DFS(b[k], y + c[k]);
// d[a[k]] = 0;
d[b[k]] = 0;//恢复现场
}else{
t1 = max(t1, y);//无路可走就结束
return;
}
}else if(b[k] == x){
if(d[a[k]] == 0){
d[a[k]] = 1;//标记对面已访问
// d[b[k]] = 1;
DFS(a[k], y + c[k]);
d[a[k]] = 0;//恢复现场
// d[b[k]] = 0;
}else{
t1 = max(t1, y);//无路可走就结束
return;
}
}
}
}
int main() {
scanf("%d %d", &n, &m);
for(int i = 1;i <= m;i++){
scanf("%d %d %d", &a[i], &b[i], &c[i]);
}
for(int j = 1;j <= n;j++){//进入DFS
d[j] = 1;//标记起点
DFS(j, 0);
d[j] = 0;//恢复现场
t = max(t1, t);//取最大值
}
printf("%d", t);
return 0;
}