鳌头山上有 𝑛n 个观景点,观景点两两之间有游步道共 𝑚m 条。高手的那个它,不喜欢太刺激的过程,因此那些没有路的观景点高手是不会选择去的。另外,她也不喜欢去同一个观景点一次以上。而高手想让他们在一起的路程最长(观景时它不会理高手),已知高手的穿梭机可以让他们在任意一个观景点出发,也在任意一个观景点结束。
输入格式
第一行,两个用空格隔开的整数 𝑛n 、 𝑚.m. 之后 𝑚m 行,为每条游步道的信息:两端观景点编号、长度。
输出格式
一个整数,表示他们最长相伴的路程。
输入输出样例
输入 #1复制
4 6 1 2 10 2 3 20 3 4 30 4 1 40 1 3 50 2 4 60
输出 #1复制
150
#include <stdio.h>
#include <string.h>
#include <limits.h>
int n,m;
int a[25][25];
int book[25];
int max_len = 0;
void dfs(int spot,int len)
{
if (len>max_len)
{
max_len=len;
}
for (int i=1;i<=n;i++)
{
if (a[spot][i]!=INT_MAX&&!book[i])
{
book[i]=1;
dfs(i,len+a[spot][i]);
book[i]=0;
}
}
}
int main()
{
for (int i=1;i<=25;i++)
{
for (int j=1;j<=25;j++)
{
if (i==j)
{
a[i][j]=0;
}
else
{
a[i][j]=INT_MAX;
}
}
}
scanf("%d %d", &n, &m);
for (int i=0;i<m;i++)
{
int A,B,C;
scanf("%d %d %d",&A,&B,&C);
a[A][B]=C;
a[B][A]=C;
}
for(int i=1;i<=n;i++)
{
memset(book,0,sizeof(book));
book[i]=1;
dfs(i,0);
}
printf("%d\n",max_len);
return 0;
}
在b站上观看了广搜的视频,了解了广搜的使用