#include<bits/stdc++.h>
using namespace std;
int Edge[21][21],n,s,an,t,ans,b[100000];
int x,y,c;
int dfs(int k,int su)//分别是当前位置和当前取到的距离
{
ans=max(ans,su);
for(int i=1;i<=t;i++)
{
if(Edge[k][i]>0&&b[i]==0) //是否有没走过的路
{
b[i]=1;
dfs(i,su+Edge[k][i]);
b[i]=0;
}
}
}
int main()
{
cin>>t>>n;
for(int i=1;i<=n;i++)
{
cin>>x>>y>>c;
Edge[x][y]=c;
Edge[y][x]=c; //注意是无向图,需存两边
}
for(int i=1;i<=t;i++)
{
b[i]=1;
dfs(i,0); //dfs
an=max(an,ans);
memset(b,0,sizeof(b));//清空用过的标记数组
}
cout<<an;//结果
}
P1294 高手去散步
最新推荐文章于 2025-03-09 17:15:16 发布