您的位置:首页 > 教育 > 培训 > 深圳傻瓜式网站建设公司好吗_住建培训网站_巨量关键词搜索查询_seo优化6个实用技巧

深圳傻瓜式网站建设公司好吗_住建培训网站_巨量关键词搜索查询_seo优化6个实用技巧

2025/3/10 11:35:20 来源:https://blog.csdn.net/LU_Yunwqy/article/details/146135138  浏览:    关键词:深圳傻瓜式网站建设公司好吗_住建培训网站_巨量关键词搜索查询_seo优化6个实用技巧
深圳傻瓜式网站建设公司好吗_住建培训网站_巨量关键词搜索查询_seo优化6个实用技巧

如果想查看完整题目,请前往洛谷 P1294 高手去散步

题目描述

鳌头山上有 n n n 个观景点,观景点两两之间有游步道共 m m m 条。高手的那个它,不喜欢太刺激的过程,因此那些没有路的观景点高手是不会选择去的。另外,她也不喜欢去同一个观景点一次以上。而高手想让他们在一起的路程最长(观景时它不会理高手),已知高手的穿梭机可以让他们在任意一个观景点出发,也在任意一个观景点结束。

输入格式

第一行,两个用空格隔开的整数 n n n m . m. m. 之后 m m m 行,为每条游步道的信息:两端观景点编号、长度。

输出格式

一个整数,表示他们最长相伴的路程。

思路

类似于一个有权无向图,多点找最短路径。具体的dfs思路已经写在代码注释里了。

C++完整代码

#include<bits/stdc++.h>
using namespace std;typedef long long ll;
int ans = 0;//最大路径
int dist;//每次dfs后的路径
int n, m;
//maps[i][j]储存从i到j的距离长度。
vector<vector<int> > maps(25, vector<int>(25, 0));
//vis[i]:标记i景点是否到过
vector<int> vis(25, 0);void dfs(int start) {vis[start] = 1;for(int i = 1;i <= n;i++) {if(maps[start][i] && vis[i] == 0) {dist += maps[start][i];vis[i] = 1;dfs(i);//从i点开始找下一个能到的点//从这里开始,就是从上一个dfs出来,说明i点之后已经没有可以到达的点了。//所以回到i点的上一个点,继续找可以到的点,所以将到i点的距离减掉dist -= maps[start][i];}}vis[start] = 0;ans = max(ans, dist);return ;
}int main() {cin >> n >> m;for(int i = 1;i <= m;i++) {int x, y,len;cin >> x >> y >> len;maps[x][y] = len;maps[y][x] = len;}for(int i = 1;i <= n;i++) {dfs(i);//}cout << ans << endl;return 0;
}

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com