1072. 树的最长路径
点击查看代码
#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
const int N = 1e4 + 10, M = 2 * N;
int h[N], e[M], ne[M], w[M], idx;
int n, ans;
void add(int a, int b, int c)
{
e[idx] = b, w[idx] = c, ne[idx] = h[a], h[a] = idx ++;
}
int dfs(int u, int fa){
int dist = 0;
int d1 = 0, d2 = 0;
for(int i = h[u]; i != -1; i = ne[i]){
int j = e[i];
if(j == fa) continue;
int d = dfs(j, u) + w[i];
if(d > d1) d2 = d1, d1 = d;
else if(d > d2) d2 = d;
dist = max(dist, d);
}
ans = max(ans, d1 + d2);
return dist;
}
int main()
{
scanf("%d", &n);
memset(h, -1, sizeof h);
for(int i = 1; i < n; i ++){
int x, y, z;
scanf("%d%d%d", &x, &y, &z);
add(x, y, z), add(y, x, z);
}
dfs(1, -1);
printf("%d\n", ans);
return 0;
}
1073 树的中心
点击查看代码
#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
const int N = 1e4 + 10, M = 2 * N;
const int INF = 0x3f3f3f3f;
int h[N], e[M], ne[M], w[M], idx;
int n;
int d1[N], d2[N], up[N], p1[N], p2[N];
void add(int a, int b, int c){
e[idx] = b, w[idx] = c, ne[idx] = h[a], h[a] = idx ++;
}
int dfs_d(int u, int fa){
d1[u] = d2[u]= -INF;
for(int i = h[u]; i != -1; i = ne[i]){
int j = e[i];
if(j == fa) continue;
int d = dfs_d(j, u) + w[i];
if(d >= d1[u]){
d2[u] = d1[u], p2[u] = p1[u];
d1[u] = d, p1[u] = j;
}
else if(d > d2[u]){
d2[u] = d, p2[u] = j;
}
}
if(d1[u] == -INF) d1[u] = d2[u] = 0;
return d1[u];
}
void dfs_u(int u, int fa)
{
for(int i = h[u]; i != -1; i = ne[i]){
int j = e[i];
if(j == fa) continue;
if(p1[u] == j) up[j] = max(up[u], d2[u]) + w[i];
else up[j] = max(up[u], d1[u]) + w[i];
dfs_u(j, u);
}
return;
}
int main()
{
scanf("%d", &n);
memset(h, -1, sizeof h);
for(int i = 1; i < n; i ++){
int x, y, z;
scanf("%d%d%d", &x, &y, &z);
add(x, y, z), add(y, x, z);
}
dfs_d(1, -1);
dfs_u(1, -1);
int ans = INF;
for(int i = 1; i <= n; i ++) ans = min(ans, max(up[i], d1[i]));
printf("%d\n", ans);
return 0;
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!