专门做护理PDCA的网站,做网站为什么很复杂,wordpress文章只显示标题,20g虚拟主机建设网站题干#xff1a;
8102年#xff0c;牛客系列竞赛空前繁荣。为了更好地管理竞赛#xff0c;小叶决定巡查于各大城市之间#xff0c;体察民情。所以#xff0c;从一个城市马不停蹄地到另一个城市成了小叶最常做的事情。小叶有一个钱袋#xff0c;用于存放往来城市间的路费…题干
8102年牛客系列竞赛空前繁荣。为了更好地管理竞赛小叶决定巡查于各大城市之间体察民情。所以从一个城市马不停蹄地到另一个城市成了小叶最常做的事情。小叶有一个钱袋用于存放往来城市间的路费。
这个国家有一套优秀的交通方案使得任何一个大城市都能从首都直接或者通过其他大城市间接到达。同时如果不重复经过大城市从首都到达每个大城市的方案都是唯一的。
如果不在某个城市停下来修整在连续行进过程中小叶所花的路费与他已走过的距离有关在走第x-1千米到第x千米这一千米中x是整数他花费的路费是x10这么多。也就是说走1千米花费11走2千米要花费23。
因为国家力挺牛客系列竞赛所以国家会给小叶报销全部的路费。
现在组织想知道小叶从某一个城市出发中间不休息到达另一个城市所有可能花费的路费中最多是多少呢
输入描述:
输入的第一行包含一个整数n表示包括首都在内的城市数
城市从1开始依次编号1号城市为首都。
接下来n-1行描述高速路高速路一定是n-1条
每行三个整数Pi, Qi, Di表示城市Pi和城市Qi之间有一条高速路长度为Di千米。
输出描述:
输出一个整数表示小叶最多花费的路费是多少。 示例1
输入
复制
5
1 2 2
1 3 1
2 4 5
2 5 4
输出
复制
135
备注:
n23333解题报告 树的直径裸题。因为反正是树嘛所以没有环所以bfs随便写就好了。那个vis[cur]1放到外面也是ac的 再一个考点就是等差数列求和了、、、 其实这个题巧就巧在是以距离为变化单位的而不是经过的城市个数如果加上了城市数的权值那就复杂了、、、
AC代码
#includebits/stdc.h
#define ll long long
#define mp make_pair
using namespace std;
const int MAX 23333 5;
vectorpairint,int vv[MAX];
int vis[MAX],dis[MAX];
int bfs(int x,int w) {memset(vis,0,sizeof vis);memset(dis,0,sizeof dis);int res 0;int rep x;queueint q;q.push(x);vis[x]1;dis[x]0;while(!q.empty()) {int cur q.front();q.pop();for(int i 0; ivv[cur].size(); i) {pairint,int now vv[cur][i];if(vis[now.first]) continue;vis[now.first]1;dis[now.first] dis[cur] now.second;if(dis[now.first] res) {rep now.first;res dis[now.first];}q.push(now.first);}}w res;return rep;
}
int main()
{int n;int a,b,w;cinn;for(int i 1; in; i) {scanf(%d%d%d,a,b,w);vv[a].push_back(mp(b,w));vv[b].push_back(mp(a,w));}int ans 0;int u bfs(1,ans);int v bfs(u,ans);ll out (ll)ans * 10 (1 ans) *(ll) ans / 2;printf(%lld\n,out);return 0 ;}