当前位置:网站首页>P4408 [NOI2003] 逃学的小孩(树的直径)
P4408 [NOI2003] 逃学的小孩(树的直径)
2022-07-05 00:02:00 【eva_can(not)survive】
[NOI2003] 逃学的小孩 - 洛谷https://www.luogu.com.cn/problem/P4408一道学习树的直径的好题。
题目要求最长的时间,说明答案应该是树的直径+max(起点离最近的朋友家的距离)
所以我们不仅仅要求树的直径,更要记录直径上的点,并遍历它们求最长延申距离。
#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include <cstdio>
#include <string>
#include <algorithm>
#include <vector>
#include <queue>
#include <stack>
#include <cstring>
#include <set>
#include <cmath>
#include <map>
#include <bitset>
typedef long long ll;
typedef unsigned long long ull;
using namespace std;
const int MN = 65005;
const int MAXN = 1e6 + 10;
const int INF = 0x3f3f3f3f;
#define IOS ios::sync_with_stdio(false)
#define lowbit(x) ((x)&(-x))
using P = pair<int, int>;
int n, m;
int head[MAXN];
int nxt[MAXN];
int ver[MAXN];
ll cost[MAXN];
ll dis[MAXN];
int last[MAXN];
int cnt;
void add(int x, int y, ll c) {
ver[++cnt] = y;
nxt[cnt] = head[x];
cost[cnt] = c;
head[x] = cnt;
}
ll ans;
ll maxlen;
int recv, recu;
bool vis[MAXN];
void dfs(int p, ll rec, int fa) {
if (maxlen < rec)
maxlen = rec, recv = p;
for (int i = head[p]; i; i = nxt[i]) {
int v = ver[i];
if (v == fa)
continue;
// dis[v]=dis[p]+cost[i];
dfs(v, rec + cost[i], p);
}
}
void dfs1(int p, int fa) {
last[p] = fa;
if (maxlen < dis[p])
maxlen = dis[p], recu = p;
for (int i = head[p]; i; i = nxt[i]) {
int v = ver[i];
if (v == fa)
continue;
dis[v] = dis[p] + cost[i];
dfs1(v, p);
}
}
ll mxx[MAXN];
ll mx;
void dfs2(int p, ll rec, int fa) {
mx = max(mx, rec);
for (int i = head[p]; i; i = nxt[i]) {
int v = ver[i];
if (vis[v] || v == fa)
continue;
dfs2(v, rec + cost[i], p);
}
}
int main() {
scanf("%d %d", &n, &m);
int x, y;
ll c;
for (int i = 1; i <= m; i++) {
scanf("%d %d %lld", &x, &y, &c);
add(x, y, c);
add(y, x, c);
}
dfs(1, 0, 0);
maxlen = 0;
dfs1(recv, 0);
ll tmp = 0;
for (int i = recu; i; i = last[i]) {
vis[i] = 1;
}
for (int i = recu; i; i = last[i]) {
mx = 0;
dfs2(i, 0, 0);
mxx[i] = mx;
}
mx = 0;
for (int i = recu; i; i = last[i]) {
tmp = min(dis[i], maxlen - dis[i]);
mx = max(mx, mxx[i] + tmp);
}
printf("%lld\n", mx + maxlen);
return 0;
}
边栏推荐
- 【雅思阅读】王希伟阅读P3(Heading)
- Go pit - no required module provides Package: go. Mod file not found in current directory or any parent
- How to reduce the stock account Commission and stock speculation commission? Is it safe to open an online account
- 【雅思阅读】王希伟阅读P4(matching2段落信息配对题【困难】)
- The input of uniapp is invalid except for numbers
- [path planning] RRT adds dynamic model for trajectory planning
- Cross domain request
- 快解析内网穿透帮助企业快速实现协同办公
- [IELTS reading] Wang Xiwei reading P4 (matching1)
- Fast parsing intranet penetration helps enterprises quickly achieve collaborative office
猜你喜欢

【雅思阅读】王希伟阅读P4(matching1)

如何用快解析自制IoT云平台

How many triangles are there in the golden K-line diagram?

How to avoid arc generation—— Aafd fault arc detector solves the problem for you

Tester's algorithm interview question - find mode

js如何实现数组转树

S32 design studio for arm 2.2 quick start

电力运维云平台:开启电力系统“无人值班、少人值守”新模式

ECCV 2022 | 腾讯优图提出DisCo:拯救小模型在自监督学习中的效果

MIT-6.824-lab4B-2022(万字思路讲解-代码构建)
随机推荐
雅思考试流程、需要具体注意些什么、怎么复习?
Introduction to ACM combination counting
IELTS examination process, what to pay attention to and how to review?
QT personal learning summary
How to reduce the stock account Commission and stock speculation commission? Is it safe to open an online account
企业公司项目开发好一部分基础功能,重要的事保存到线上第一a
The company needs to be monitored. How do ZABBIX and Prometheus choose? That's the right choice!
The input of uniapp is invalid except for numbers
js正则表达式之中文验证(转)
Design of emergency lighting evacuation indication system for urban rail transit station
巩固表达式C# 案例简单变量运算
It's too convenient. You can complete the code release and approval by nailing it!
Solution record of jamming when using CAD to move bricks in high configuration notebook
Fast analysis -- easy to use intranet security software
【雅思阅读】王希伟阅读P4(matching2段落信息配对题【困难】)
Go step on the pit - no required module provides package: go mod file not found in current directory or any parent
Life is changeable, and the large intestine covers the small intestine. This time, I can really go home to see my daughter-in-law...
积分商城游戏设置的基本要点
业务场景功能的继续修改
Summary of week 22-07-02