当前位置:网站首页>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;
}
边栏推荐
- How to use fast parsing to make IOT cloud platform
- 取得PMP证书需要多长时间?
- 青海省国家湿地公园功能区划数数据、全国湿地沼泽分布数据、全国省市县自然保护区
- Ap8022 switching power supply small household appliances ACDC chip offline switching power supply IC
- js正则表达式之中文验证(转)
- Actual combat simulation │ JWT login authentication
- C language to quickly solve the reverse linked list
- [论文阅读] TUN-Det: A Novel Network for Thyroid Ultrasound Nodule Detection
- 【路径规划】RRT增加动力模型进行轨迹规划
- Solve the problem that the virtual machine cannot be remotely connected through SSH service
猜你喜欢

业务场景功能的继续修改

企业公司项目开发好一部分基础功能,重要的事保存到线上第一a

香港珠宝大亨,22亿“抄底”佐丹奴

Jar批量管理小工具

Parsing of XML

Réseau graphique: Qu'est - ce que le Protocole d'équilibrage de charge de passerelle glbp?

Significance of acrel EMS integrated energy efficiency platform in campus construction
![[JS] - [sort related] - Notes](/img/b7/af467c7a169b73c3c4936072aef8b9.png)
[JS] - [sort related] - Notes

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

Application of multi loop instrument in base station "switching to direct"
随机推荐
Using fast parsing intranet penetration to realize zero cost self built website
The company needs to be monitored. How do ZABBIX and Prometheus choose? That's the right choice!
解决无法通过ssh服务远程连接虚拟机
【雅思阅读】王希伟阅读P4(matching1)
XML的解析
QT personal learning summary
企业公司项目开发好一部分基础功能,重要的事保存到线上第一a
[IELTS reading] Wang Xiwei reads P4 (matching2 paragraph information matching question [difficult])
图解网络:什么是网关负载均衡协议GLBP?
Solve the problem that the virtual machine cannot be remotely connected through SSH service
Fast parsing intranet penetration helps enterprises quickly achieve collaborative office
Continuous modification of business scenario functions
22-07-02周总结
Power operation and maintenance cloud platform: open the new mode of "unattended and few people on duty" of power system
[IELTS reading] Wang Xiwei reading P4 (matching1)
OSEK standard ISO_ 17356 summary introduction
跨域请求
Illustrated network: what is gateway load balancing protocol GLBP?
Actual combat simulation │ JWT login authentication
挖财学院开户安全的吗?开户怎么开?