思路
算法:dfs深搜
步骤:
1. 输入并存储
2. for循环:遍历从每一个景点开始的步数(dfs(景点,0))
3. dfs:
如果step>最大值,最大值=step;
for循环:遍历每一条路线
如果该路线行得通:dfs(到达的景点,现在步数+该路线长度);
代码
#include<bits/stdc++.h>
using namespace std;
int n,m,a[25][25],ans=0;
bool b[25];
void dfs(int start,int step){
if(step>ans) ans=step;
for(int i=1;i<=n;i++){
if(a[start][i]&&b[i]==0){
b[i]=1;
dfs(i,step+a[start][i]);
b[i]=0;
}
}
}
int main(){
cin>>n>>m;
memset(a,0,sizeof(a));
for(int i=1;i<=m;i++){
int s,e,l;
cin>>s>>e>>l;
a[s][e]=l;
a[e][s]=l;
}
for(int i=1;i<=n;i++){
memset(b,0,sizeof(b));
b[i]=1;
dfs(i,0);
}
cout<<ans;
return 0;
}