当前位置:网站首页>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;
}
边栏推荐
- 人脸识别5- insight-face-paddle-代码实战笔记
- After Microsoft disables the IE browser, open the IE browser to flash back the solution
- 「运维有小邓」域密码策略强化器
- 他做国外LEAD,用了一年时间,把所有房贷都还清了
- JS convert pseudo array to array
- He worked as a foreign lead and paid off all the housing loans in a year
- Best practice case of enterprise digital transformation: introduction and reference of cloud based digital platform system security measures
- OSEK standard ISO_ 17356 summary introduction
- Intelligence test to see idioms guess ancient poems wechat applet source code
- 快解析——好用的内网安全软件
猜你喜欢

使用快解析搭建自己的minecraft服务器

Continuous modification of business scenario functions

How to use fast parsing to make IOT cloud platform

JS how to realize array to tree

IELTS examination process, what to pay attention to and how to review?

45 year old professor, she threw two super unicorns

Why does infographic help your SEO

Selected cutting-edge technical articles of Bi Ren Academy of science and technology

圖解網絡:什麼是網關負載均衡協議GLBP?

人脸识别5- insight-face-paddle-代码实战笔记
随机推荐
Face recognition 5- insight face padding code practice notes
Power operation and maintenance cloud platform: open the new mode of "unattended and few people on duty" of power system
企业公司项目开发好一部分基础功能,重要的事保存到线上第一a
【雅思阅读】王希伟阅读P3(Heading)
人生无常,大肠包小肠, 这次真的可以回家看媳妇去了。。。
企业应用业务场景,功能添加和修改C#源码
In the enterprise, win10 turns on BitLocker to lock the disk, how to back up the system, how to recover when the system has problems, and how to recover quickly while taking into account system securi
他做国外LEAD,用了一年时间,把所有房贷都还清了
用快解析内网穿透实现零成本自建网站
Solve the problem that the virtual machine cannot be remotely connected through SSH service
取得PMP證書需要多長時間?
Réseau graphique: Qu'est - ce que le Protocole d'équilibrage de charge de passerelle glbp?
认识ThreadPoolExecutor
如何避免电弧产生?—— AAFD故障电弧探测器为您解决
It's too convenient. You can complete the code release and approval by nailing it!
[论文阅读] CarveMix: A Simple Data Augmentation Method for Brain Lesion Segmentation
人脸识别5- insight-face-paddle-代码实战笔记
Using the uniapp rich text editor
MP advanced operation: time operation, SQL, querywapper, lambdaquerywapper (condition constructor) quick filter enumeration class
快解析内网穿透帮助企业快速实现协同办公