当前位置:网站首页>P4408 [noi2003] truant children (tree diameter)
P4408 [noi2003] truant children (tree diameter)
2022-07-05 00:05:00 【eva_ can(not)survive】
[NOI2003] Kids playing truant - Luogu https://www.luogu.com.cn/problem/P4408 A good question for learning the diameter of trees .
The longest time required for the topic , Explain that the answer should be the diameter of the tree +max( The distance from the starting point to the nearest friend's home )
So we don't just ask for the diameter of the tree , Record the point on the diameter , And traverse them to find the longest extension distance .
#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;
}
边栏推荐
- 【雅思阅读】王希伟阅读P4(matching2段落信息配对题【困难】)
- js如何实现数组转树
- 多回路仪表在基站“转改直”方面的应用
- Specification for fs4061a boost 8.4v charging IC chip and fs4061b boost 12.6V charging IC chip datasheet
- Hong Kong Jewelry tycoon, 2.2 billion "bargain hunting" Giordano
- Consolidated expression C case simple variable operation
- ICML 2022 | 3dlinker: e (3) equal variation self encoder for molecular link design
- Summer challenge brings you to play harmoniyos multi terminal piano performance
- 认识ThreadPoolExecutor
- Five papers recommended for the new development of convolutional neural network in deep learning
猜你喜欢
香港珠宝大亨,22亿“抄底”佐丹奴
P3304 [SDOI2013]直径(树的直径)
[paper reading] cavemix: a simple data augmentation method for brain vision segmentation
快解析——好用的内网安全软件
PMP证书续证流程
企业公司项目开发好一部分基础功能,重要的事保存到线上第一a
如何有效对直流列头柜进行监测
Combien de temps faut - il pour obtenir un certificat PMP?
Using fast parsing intranet penetration to realize zero cost self built website
[JS] - [sort related] - Notes
随机推荐
[Peking University] tensorflow2.0-1-opening
Pytoch --- use pytoch to realize linknet for semantic segmentation
How to avoid arc generation—— Aafd fault arc detector solves the problem for you
Cross domain request
积分商城游戏设置的基本要点
Remember to build wheels repeatedly at one time (the setting instructions of obsidian plug-in are translated into Chinese)
快解析内网穿透帮助企业快速实现协同办公
【北京大学】Tensorflow2.0-1-开篇
Tester's algorithm interview question - find mode
After Microsoft disables the IE browser, open the IE browser to flash back the solution
人生无常,大肠包小肠, 这次真的可以回家看媳妇去了。。。
Acrel-EMS综合能效平台在校园建设的意义
If you open an account of Huatai Securities by stock speculation, is it safe to open an account online?
Date time type and format in MySQL
Skills in analyzing the trend chart of London Silver
P4408 [NOI2003] 逃学的小孩(树的直径)
Summer challenge brings you to play harmoniyos multi terminal piano performance
Microservice
微服务(Microservice)那点事儿
同事的接口文档我每次看着就头大,毛病多多。。。