题目描述
题目来自www.luogu.com.cn
思路
邻接矩阵存储+dfs遍历
代码
#include<iostream>
#include<cstdio>
#include<cstring>
#include<string>
#include<cmath>
#include<algorithm>
#include<vector>
#include<stack>
#include<queue>
#include<set>
using namespace std;
int a[50][50] = {0},n;
int x,y,m,c,ans = 0,an = 0,maxx = 0;
int vis[10000] = {0};
void dfs(int st,int sum)
{
maxx = max(maxx,sum);
for(int i = 1; i <= n; i++)
{
if(a[st][i] && !vis[i])
{
vis[i] = 1;
dfs(i,sum + a[st][i]);
vis[i] = 0; //回溯
}
}
}
int main()
{
cin >> n >> m;
for(int i = 1; i <= m; i++)
{
cin >> x >> y >> c;
a[x][y] = c;
a[y][x] = c;//无向的,两边都要存
}
for(int i = 1; i <= m; i++)
{
vis[i] = 1;//标志此点走过
dfs(i,0);
vis[i] = 0;
ans = max(ans,maxx);
maxx = 0;
}
cout << ans << endl;
}