原题链接:蓝桥杯2013年第四届真题-大臣的旅费
树的直径
参考代码:
#include<bits/stdc++.h> typedef long long LL; using namespace std; const int SIZE = 5E4; vector<pair<int, int> > vec[SIZE]; bool Vis[SIZE]; pair<int, int> DFS(int now) { Vis[now] = 1; pair<int, int> nowpos = make_pair(now, 0); for (int pos = 0; pos < vec[now].size(); pos++) { pair<int, int> next = vec[now][pos]; if (Vis[next.first]) continue; pair<int, int> tmp = DFS(next.first); if (next.second + tmp.second > nowpos.second) { nowpos = tmp; nowpos.second += next.second; } } return nowpos; } int spend(int dis) { return (11 + 10 + dis) * dis / 2; } int main() { int form, to, w, total; scanf("%d", &total); for (int pos = 1; pos < total; pos++) { scanf("%d%d%d", &form, &to, &w); vec[form].push_back(make_pair(to, w)); vec[to].push_back(make_pair(form, w)); } pair<int, int> tmp = DFS(1); memset(Vis, false, sizeof(Vis)); printf("%d\n", spend(DFS(tmp.first).second)); }
0.0分
0 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复