树的直径    


参考代码:

#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分

0 人评分

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

评论列表 共有 0 条评论

暂无评论