当前位置:网站首页>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;
}
边栏推荐
- Design of emergency lighting evacuation indication system for urban rail transit station
- Hash table, hash function, bloom filter, consistency hash
- 圖解網絡:什麼是網關負載均衡協議GLBP?
- Significance of acrel EMS integrated energy efficiency platform in campus construction
- Financial markets, asset management and investment funds
- The input of uniapp is invalid except for numbers
- [IELTS reading] Wang Xiwei reads P4 (matching2 paragraph information matching question [difficult])
- Why does infographic help your SEO
- 如何用快解析自制IoT云平台
- 【监控】zabbix
猜你喜欢
图解网络:什么是网关负载均衡协议GLBP?
[IELTS reading] Wang Xiwei reading P4 (matching1)
French scholars: the explicability of counter attack under optimal transmission theory
如何有效对直流列头柜进行监测
【雅思阅读】王希伟阅读P3(Heading)
Every time I look at the interface documents of my colleagues, I get confused and have a lot of problems...
Parsing of XML
[paper reading] cavemix: a simple data augmentation method for brain vision segmentation
Face recognition 5- insight face padding code practice notes
Why does infographic help your SEO
随机推荐
PermissionError: [Errno 13] Permission denied: ‘data. csv‘
Font design symbol combination multifunctional wechat applet source code
[IELTS reading] Wang Xiwei reading P3 (heading)
[JS] - [sort related] - Notes
QT personal learning summary
Some basic functions of enterprise projects are developed, and important things are saved to online first a
Is it safe to open and register new bonds? Is there any risk? Is it reliable?
[binary tree] the maximum difference between a node and its ancestor
IELTS examination process, what to pay attention to and how to review?
Using fast parsing intranet penetration to realize zero cost self built website
巩固表达式C# 案例简单变量运算
圖解網絡:什麼是網關負載均衡協議GLBP?
Microservice
Application of multi loop instrument in base station "switching to direct"
ECCV 2022 | Tencent Youtu proposed disco: the effect of saving small models in self supervised learning
PMP certificate renewal process
Selected cutting-edge technical articles of Bi Ren Academy of science and technology
A new method for analyzing the trend chart of London Silver
45 year old professor, she threw two super unicorns
How to avoid arc generation—— Aafd fault arc detector solves the problem for you