两种方式存图 求树的直径

embedded/2025/2/13 7:31:49/

vector求数的直径

#include<bits/stdc++.h>
using namespace std;
const int N = 1e5 + 9;int n;
struct Edge
{int id, w;
};
vector<Edge> h[N];
int dist[N];void dfs(int u, int father, int distance)
{dist[u] = distance;for(auto node : h[u])if(node.id != father)dfs(node.id, u, distance + node.w);
}int main()
{scanf("%d", &n);for(int i = 0; i < n; i ++){int a, b, c;scanf("%d%d%d", &a, &b, &c);h[a].push_back({b, c});h[b].push_back({a, c});}dfs(1, -1, 0);int u = 1;for(int i = 1; i <= n; i ++)if(dist[i] > dist[u])u = i ;dfs(u, -1, 0);for(int i = 1; i <= n; i ++)if(dist[i] > dist[u])u = i;int s = dist[u];printf("%lld\n", s * 10 + s * (s + 1ll) / 2);return 0;
}

链式前向星求树的直径(数组模拟邻接表)

#include<bits/stdc++.h>
using namespace std;
const int N = 1e5 + 9, M = 2e5 + 9;int n;
int h[N], e[M], w[M], ne[M], idx;
int dist[N];void add(int a, int b, int c)
{e[idx] = b,w[idx] = c;ne[idx] = h[a];h[a] = idx ++ ;
}void dfs(int u, int father, int distance)
{dist[u] = distance;for(int i = h[u]; ~i; i = ne[i]){int j = e[i];if(j != father)dfs(j, u, distance + w[i]);}
}int main()
{scanf("%d", &n);memset(h, -1, sizeof h);for(int i = 0; i < n; i ++){int a, b, c;scanf("%d%d%d", &a, &b, &c);add(a, b, c), add(b, a, c);}dfs(1, -1, 0);int u = 1; for(int i = 2; i <= n; i ++)if(dist[u] < dist[i])u = i;dfs(u, -1, 0);for(int i = 1; i <= n; i ++)if(dist[u] < dist[i])u = i;printf("%lld\n", dist[u] * 10 + (dist[u] + 1ll ) * dist[u] / 2);return 0;
}


http://www.ppmy.cn/embedded/161817.html

相关文章

linux 内核结构基础

linux 内核对象基础 1.linux 的 kobj(struct kobject) 类2.linux 中的 kset3. linux 下的 ktype (kobj_type 类)4. kobj 的使用理解 1.linux 的 kobj(struct kobject) 类 kobj 是 linux 下的高级抽象类定义&#xff0c;用于派生所有其余的类定义,比如设备类定义struct device.…

【DeepSeek】DeepSeek的横向扩展使用② | 制作PPT

本文的主要内容是使用DeepSeek KIMI 制作PPT&#xff0c;效率飞起。 目录 如何使用DeepSeek制作PPT&#xff1f; ①利用 DeepSeek 生成 PPT 内容。 ②使用 Kimi 转换生成 PPT DeepSeek官网&#xff1a;DeepSeek 点击“开始对话”&#xff0c;进入交互页面。 Chat&#x…

Kafka的消费消息是如何传递的?

大家好&#xff0c;我是锋哥。今天分享关于【Kafka的消费消息是如何传递的&#xff1f;】面试题。希望对大家有帮助&#xff1b; Kafka的消费消息是如何传递的&#xff1f; 1000道 互联网大厂Java工程师 精选面试题-Java资源分享网 Kafka 的消息传递机制是基于 发布-订阅 模型…

5、大模型的记忆与缓存

文章目录 本节内容介绍记忆Mem0使用 mem0 实现长期记忆 缓存LangChain 中的缓存语义缓存 本节内容介绍 本节主要介绍大模型的缓存思路&#xff0c;通过使用常见的缓存技术&#xff0c;降低大模型的回复速度&#xff0c;下面介绍的是使用redis和mem0&#xff0c;当然redis的语义…

机器学习(李宏毅)——BERT

一、前言 本文章作为学习2023年《李宏毅机器学习课程》的笔记&#xff0c;感谢台湾大学李宏毅教授的课程&#xff0c;respect&#xff01;&#xff01;&#xff01; 读这篇文章必须先了解self-attention、Transformer&#xff0c;可参阅我其他文章。 二、大纲 BERT简介self-…

MRC最大比合并

1️⃣ 分集和复用技术介绍 多天线技术大致可以分为两类&#xff1a;分集技术和空间复用技术。 分集技术利用多天线接收同一个信号&#xff0c;从而提高传输的可靠性。分集技术的基本思想是将瑞利衰落无线信道转换成更加稳定的信道&#xff0c;像 AWGN 一样没有灾难性的信号衰…

Kafka的ISR是什么,HW是什么,怎么保证可靠性,Kafka怎么实现顺序消息?为什么Kafka的broker上的topic越多,效率越慢?

目录 1. Kafka 的 ISR 是什么 2. Kafka 的 HW 是什么 3. Kafka 如何保证可靠性 4. Kafka 怎么实现顺序消息 5. 为什么 Kafka 的 broker 上的 topic 越多,效率越慢 1. Kafka 的 ISR 是什么 ISR 即 In-Sync Replicas(同步副本集),是 Kafka 中一个重要的概念,用于保障消…

音视频协议

1. 多媒体信息 1.1 多媒体信息的两个主要特点&#xff1a; 信息量很大 标准语音&#xff1a;64Kbits(8KHz采样&#xff0c;8位编码)高质量音频&#xff1a;3Mbps(100KHz采样&#xff0c;12位编码) 在传输多媒体数据时&#xff0c;对时延和时延抖动均有较高要求 1.2 处理时延…