UVA10308 Roads in the North

UVA 访问性不好,又因为多组数据,不知道为啥 TLE 了。但是在其他地方测是 AC 的。

方法:

随便找一点 ss,用 dfs 找到距离 ss 点最远一点 tt,再 dfs 找到距离 tt 最远点 pp,则 ttpp 的距离是树的直径。

代码:

#include <bits/stdc++.h>
using namespace std;

const int N = 1e4 + 5;
int maxn = 0, _place = 0;

struct Node
{
	int v, w;
	Node(int x, int y): v(x), w(y){}
};

vector<Node> G[N];

void dfs(int place, int fa, int cnt)
{
	if (cnt > maxn)
	{
		maxn = cnt;
		_place = place;
	}
	for (int i = 0; i < G[place].size(); i++)
	{
		int nx = G[place][i].v;
		if (nx != fa)
		{
			dfs(nx, place, cnt + G[place][i].w);
		}
	}
}

int main()
{
	int u, v, w;
	while (scanf("%d %d %d", &u, &v, &w) != EOF)
	{
		G[u].push_back(Node(v, w));
		G[v].push_back(Node(u, w));
	}
	dfs(u, 0, 0);
	maxn = 0;
	dfs(_place, 0, 0);
	printf("%d\n", maxn); 
	return 0;
}
posted @   HappyBobb  阅读(1)  评论(0编辑  收藏  举报  
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示