一张无向图有 N 个点(编号为 1 ∼N ),M 条边,且保证任意两个点之间最多只有一条边。
请编程求解出,该图中从任意点出发,可以走出的最长路的长度是多少?
请注意:在图的遍历过程中,不会重复访问同一个点。
第 1 行有 2 个整数 N 和 M;
接下来 M 行,每行有 3 个整数 X,Y,L,代表点 X 和点 Y 之间,存在一条长度为 L 的无向边。
输出一个整数,代表图中存在的最长路。
4 6
1 2 10
2 3 20
3 4 30
4 1 40
1 3 50
2 4 60
150
#include<bits/stdc++.h>
using namespace std;
int n,m,a[1010][1010],ans;
bool f[1010];
void dfs(int x,int sum){
int i;
ans=max(ans,sum);
for(i=1;i<=n;i++){
if(a[i][x]!=0&&f[i]==false){
f[i]=true;
dfs(i,sum+a[i][x]);
f[i]=false;
}
}
}int main(){
int i,x,y,z;
cin>>n>>m;
for(i=1;i<=m;i++){
cin>>x>>y>>z;
a[x][y]=z;
a[y][x]=z;
}for(i=1;i<=n;i++){
memset(f,sizeof(f),false);
f[i]=true;
dfs(i,0);
}cout<<ans;
return 0;
}
总是过不了样例,有没有大佬救救这个蓝名蒟蒻qwq