Cow Marathon(树的直径)(最长路)

2023-11-11

Cow Marathon
Time Limit:2000MS     Memory Limit:30000KB     64bit IO Format:%lld & %llu

Description

After hearing about the epidemic of obesity in the USA, Farmer John wants his cows to get more exercise, so he has committed to create a bovine marathon for his cows to run. The marathon route will include a pair of farms and a path comprised of a sequence of roads between them. Since FJ wants the cows to get as much exercise as possible he wants to find the two farms on his map that are the farthest apart from each other (distance being measured in terms of total length of road on the path between the two farms). Help him determine the distances between this farthest pair of farms. 

Input

* Lines 1.....: Same input format as "Navigation Nightmare".

Output

* Line 1: An integer giving the distance between the farthest pair of farms. 

Sample Input

7 6
1 6 13 E
6 3 9 E
3 5 7 S
4 1 3 N
2 4 20 W
4 7 2 S

Sample Output

52

Hint

The longest marathon runs from farm 2 via roads 4, 1, 6 and 3 to farm 5 and is of length 20+3+13+9+7=52. 
套模板:
#include<cstdio>
#include<cstring>
#include<queue>
#include<algorithm>
using namespace std;
const int MAXN = 300010;
struct Edge{
	int from,to,val,next;
};
Edge edge[2*MAXN];

int head[MAXN];
int edgenum;
void init(){
	memset(head,-1,sizeof(head));
	edgenum=0;
}

void addEdge(int u,int v,int w)
{
	edge[edgenum].from=u;
	edge[edgenum].to=v;
	edge[edgenum].val=w;
	edge[edgenum].next=head[u];
	head[u]=edgenum++;
}
int n;
int ans;
int longest;
int dis[MAXN];
bool vis[MAXN];
void BFS(int x)
{
	memset(dis,0,sizeof(dis));
	memset(vis,false,sizeof(vis));
	queue<int> Q;
	Q.push(x);
	dis[x]=0;
	vis[x]=true;
	ans=0;
	while(!Q.empty())
	{
		int u=Q.front();
		Q.pop();
		for(int i=head[u];i!=-1;i=edge[i].next){
			int v=edge[i].to;
			if(!vis[v]){
				if(dis[v]<dis[u]+edge[i].val){
					dis[v]=dis[u]+edge[i].val;
					/*if(ans<dis[v]){  把这个放在下面的for循环中会快一些;
						ans=dis[v];
						longest=v;
					}*/
				}
				vis[v]=true;
				Q.push(v); 
			}
		}
	}
	for(int i = 1; i <= n; i++) {	//这里要注意,有的图的顶点不是从 0 开始的;比如这次的农场,没有第零个农场吧;在主函数中BFS时也要注意; 
        if(ans < dis[i]) {
          	ans = dis[i];
          	longest = i;
        }
    }
}

int main()
{
	char s[2];
	int m,a,b,c;
	while(scanf("%d%d",&n,&m)!=EOF)
	{
		init();
		for(int i=0;i<m;i++)
		{
			scanf("%d%d%d%s",&a,&b,&c,s);
			getchar();
			addEdge(a,b,c);
			addEdge(b,a,c);
		}BFS(1);  BFS(longest);		//BFS(1);中的1是任意找的,也可以是2...但不能是零; 
		printf("%d\n",ans);
	}
	return 0;
}
</pre><pre name="code" class="cpp">
再帮助大家理解理解:
<pre name="code" class="cpp">#include<iostream> 
#include<queue>
#define Maxn 200 
using namespace std; 
struct Edge{
	int from,to,val,next;
}edge[Maxn];	//存储边信息的结构体 
 
int head[Maxn];		//起点为下标存储(edge中边的位置)  
int main() 
{ 

     int edgenum;	//边数  
     memset(head,-1,sizeof(head)); 
     //因为刚开始head不指向任何一条边的下标,所以head都为-1  
     cin>>edgenum;		//边数  
     for(int i=0;i<edgenum;i++) 
     { 
         cin>>edge[i].from>>edge[i].to>>edge[i].val;	//起点 终点 权重  
         edge[i].next=head[edge[i].from];
		 head[edge[i].from]=i;		//不容易理解的地方 
         /*
         利用head数组存储的是最新的(以数组下标为起点的)边的下标 
         并且该条边的next指向的是同样以数组下标为起点的下一条边的下标 
         直到下一条边的next=-1(即将所有以数组下标为起点的边都遍历了一遍) 
         */ 
     } 
     for(int u=1;u<10;u++)	//输出图  
     { 
        cout<<"以"<<u<<"为起点的所有边的信息:"<<endl;  
        for(int v=head[u];v!=-1;v=edge[v].next)		//遍历以u为起点的所有边的信息  
        cout<<edge[v].from<<" "<<edge[v].to<<" "<<edge[v].val<<endl;
     } 
     return 0; 
}


 
       

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Cow Marathon(树的直径)(最长路) 的相关文章

  • java并发编程:CopyOnWrite容器介绍

    前言 Copy On Write简称COW 是一种用于程序设计中的优化策略 其基本思路是 从一开始大家都在共享同一个内容 当某个人想要修改这个内容的时候 才会真正把内容Copy出去形成一个新的内容然后再改 这是一种延时懒惰策略 从JDK1
  • radius认证技术

    1 AAA和Radius概述 AAA是验证授权和记账Authentication Authorization and Accounting 的简称 它是运行于NAS上的客户端程序 它提供了一个用来对验证 授权和记账这三种安全功能进行配置的一
  • 西门子S7-200 SMART控制步进电机(二)

    目录 一 开环运动控制方法 二 运动轴概述 三 配置运动控制向导 一 开环运动控制方法 S7 200 SMART CPU提供三种开环运动控制的方法 1 脉冲宽度调制 PWM 内置于CPU中 用于速度 位置或占空比的控制 2 脉冲串输出 PT
  • 《面试准备》c/c++贪心算法实例

    贪心算法问题1 西红柿首富的烦恼 王多鱼获得了一笔的奖金X 要求购买最少的商品把钱花光 即没有零钱剩下 否则奖金会被没收 输入 一个整数k 商品的种类 每个种类商品个数不限 第i类商品的价值a i 一个整数m 奖金总额 输出 最少商品数量
  • 现货白银走势背后的秘密

    现货白银的价格走势是全球白银市场指标价格 很多大型机构 基金公司和专业投资者都会参与其中 普通的投资者作为相对弱势的一群 当然想知道这个品种价格走势背后所蕴藏的秘密 日后在交易的过程中才能主动应对 然而跟现货黄金一样的是 现货白银的价格走势
  • 探索产品研发流程及步骤

    引言 一直想做一篇关于产品研发相关的文章 终于有时间来总结这些东西 说到产品研发 那么不得不说一下产品 书上说产品的5个要素 内涵 形式 外延 理念和终端 但是我认为产品就三个关键点 有用 可用 可行 有用 产品能帮助解决用户某个真实存在的
  • 跟小白学Python数据分析——绘制词云图

    本文继续采用PyEcharts v1 x版本进行绘制水球图 注 PyEcharts分为 v0 5 x 和 v1 x 两个大版本 v0 5 x 和 v1 x 间不兼容 v0 5 x是基于Python2 7 3 4 版本开发的 而v1 x是一个
  • nginx1.21.6配置ssl时升级TLSv1.3的步骤过程和解决遇到的问题

    因为安装TLS 1 3协议是要OpenSSL1 1 1以上的 所以先升级OpenSSL1 1 1 先去官网下载这个这个OpenSSL1 1 1版本的tar安装包 添加链接描述 先查询系统的版本是多少 才1 02 然后上传下载好的tar安装包
  • 01黑马数据结构笔记之动态搭建数组(vector)

    01黑马数据结构笔记之动态搭建数组 vector 1 思路 类似STL的容器vector 动态的开辟内存存放数据 内存不够时以两倍增长 提供相应的增 删 查等函数 主要是利用一个结构体来管理数组 记录数组的成员 typedef struct
  • Pandas之DataFrame对象大总结

    一 什么是DataFrame DataFrame是一个表格型的数据结构 它含有一组有序的列 每列可以是不同类型的值 DataFrame既有行索引也有列索引 它可以被看做是由Series组成的字典 共用同一个索引 数据是以二维结构存放的 类似
  • 【ubuntu】Ubuntu中Android SDK下载跟配置

    1 下载SDK SDK下载网址 2 解压下载的压缩包 android sdk tar zxvf android sdk r24 4 1 linux tgz 3 安装32位库 sudo apt get install y libc6 i386
  • Obsidian 0x06:Obsidian 笔记仓库管理

    文章目录 Obsidian 笔记仓库管理 obsidian 文件夹 trash 文件夹 笔记库设置与插件的迁移 Obsidian 笔记仓库管理 可以根据自己的需要创建不同的笔记库 但要注意 不同笔记库之间的双链是无法访问的 你不能从一个笔记
  • FastDFS 介绍及安装部署

    FastDFS 介绍及安装部署 FastDFS 组成 Tracker Server Storage Server FastDFS上传机制 FastDFS使用场景 FastDFS架构 实验环境 部署 FastDFS 安装依赖 安装服务端 配置
  • 摄像头参数 靶面尺寸 像素阵列 像元尺寸 光学结构

    靶面尺寸 Optical Format 图像传感器的尺寸越大 则成像系统的尺寸越大 捕获的光子越多 感光性能越好 信噪比越低 像素阵列 Pixel Array 对景物中明暗细节的分辨能力 像元尺寸 Pixel Size 像元尺寸是指芯片像元
  • 图片下载功能

    GetMapping flag public void getFiles PathVariable String flag HttpServletResponse response OutputStream os 新建一个输出流对象 Str
  • FZ15S五轴加工中心的自动换刀装置设计(论文+CAD图纸+SW三维图+开题报告+任务书+外文翻译)

    摘要 随着我国国民经济迅速发展和国防建设的需要 对高档的数控机床提出了急迫的大量需求 机床是一个国家制造业水平的象征 而代表机床制造业最高境界的是五轴联动数控机床系统 从某种意义上说 反映了一个国家的工业发展水平状况 长期以来 以美国为首的
  • servlet相关知识整理

    servlet相关知识整理 一 sevlet规范 1 servelet规范中 指定 动态资源文件 开发步骤 2 在servelet规范中 指定http服务器调用动态资源文件规则 3 在servelet规范中 指定http服务器管理动态资源文

随机推荐

  • 微信小程序wxml页面中,背景图片直接引用不显示,其他解决方案

    微信小程序wxml页面中 使用background url 引用图片的相对路径 但是不显示应该咋办 var src images index top bg png let src2 wx getFileSystemManager readF
  • crossdomain.xml在weblogic上的部署

    摘要 Flex API的程序访问ArcGIS Server时 经常遇到安全沙箱的问题 crossdomain xml配置文件可以解决这个问题 在tomcat服务器只需要把这个文件放到webapps根目录下 WebLogic的配置要稍微麻烦一
  • pandas 根据某一列的值修改某一列的值

    在做数据分析时 需要根据某一列的值修改另外一列的值 此时就需要使用pd loc 函数 例子 import pandas as pd x2 pd read csv submit csv x2 假如 我要修改id 800000的isDefaul
  • 光条中心提取方法总结(二)

    传统算法见之前的文章 光条中心提取方法总结 一 视觉菜鸟Leonardo的博客 CSDN博客e 二 深度学习方法 利用深度学习来进行光条中心提取是这几年刚兴起的方法 目前可供参考的论文屈指可数 方法从两个途径切入 1 利用深度学习进行光条图
  • 研一Python基础课程第二周课后习题分享(含代码)

    一 问题描述 共计18道 1 问题1 你买了n个苹果 但是很不幸里面混进了一条虫子 如果虫子每x小时吃完一只苹果 然后开始吃下一个 经过y小时后 你还有几个完整的苹果 分别输入n x y三个整型数值 输出结果 2 问题2 分别输入两个时间
  • javascript 实现Base64加密

    想必大家对base64并不陌生吧 在本文将为大家介绍下Js中的base64加密解密过程 感兴趣的朋友不要错过 html view plain copy
  • 关于存储那些事1-----基础篇

    目录 一 SSD 1 简介 1 1 分类 1 1 1 易失性存储器 1 1 2 非易失性存储器 2 SSD接口 2 1 SATA接口 2 2 SATA Express接口 2 3 SAS接口 2 4 U 2接口 2 5 mSATA接口 2
  • 【解决方案】LaTeX插入svg图片

    LaTeX插入svg图片的解决方案 今天在写论文时 想在论文里插入svg图片 遇到了问题 百度了一下方法 发现LaTeX不支持插入svg图片 在捣鼓了一下之后 发现基本的方法不是失效就是比较麻烦 本文简单总结了两个解决方案 发现都不太行 研
  • 系统及服务器巡检流程图,巡检日常工作流程图

    巡检日常工作流程图 由会员分享 可在线阅读 更多相关 巡检日常工作流程图 1页珍藏版 请在人人文库网上搜索 1 质质检检日日常常巡巡检检流流程程图图 查查看看生生产产交交接接半半成成品品或或成成品品 初初步步确确定定生生产产零零件件 准准备
  • Win10下安装mujuco

    1 背景 安装mujuco之前玩的环境都是些简单的 易处理的环境 就是下面这种 第一张图是移动下面的方块保持杆子立起来环境 第二张图是小车爬山环境 第三张图是给杆子施加力使得杆子保持立起来环境 从图也可以看出 是比较简单的环境 而mujuc
  • 批量文本文件内容替换之Linux sed命令

    文章目录 sed命令简介 需求 sed实现批量替换 sed命令简介 Linux sed命令可以使用shell脚本进行文件的批量处理 如批量替换 修改等等 尤其是在需要对大量文本文件进行批量操作时 使用sed命令会起到事半功倍的效果 关于详细
  • 其他-08-idea配置查询字节码

    1 字节码查询 查看一下idea是否安装了 一般都安装了 编译一下 生成target 点击View下面的Show ByteCode即可 其实你看到的字节码是java加工多的 可以看下这个类 原生都是数字 以 helloWql方法字节码解释
  • 为何程序员完成最后20%的工作需要的时间跟之前的80%一样多?

    听过行百里者半九十吧 这句话在程序员的工作中同样适用 到底是为何呢 Matija用一个精巧的比喻揭示了个中道理 其实这就好比在高峰期从郊外开车回市中心 前 80 的路程很顺 高速嘛 可能两小时就走完了 但是到了城里 就走不动了 红绿灯 人行
  • MATLAB点云处理函数整理

    pcbin 空间bin点云点 bins pcbin ptCloud numBins bins pcbin ptCloud numBins spatialLimits bins binLocations pcbin pcdenoise 去噪
  • 数据结构与算法之二叉树的建立

    文章目录 一 已知二叉树的先序和中序数列 创建二叉树 1 算法思想 2 代码实现 二 已知二叉树的先序和后序数列 创建二叉树 1 算法思想 2 代码实现 三 二叉树的顺序存放 打印先 中 后序遍历 一 已知二叉树的先序和中序数列 创建二叉树
  • Java图形化界面编程一

    目录 一 介绍 二 AWT编程 2 1AWT介绍 2 2 AWT继承体系 2 3 Container容器 2 3 1 Container继承体系 2 3 2 常见API 2 3 3 容器演示 2 4 LayoutManager布局管理器 2
  • Keras使用VGG16模型预测自己的图片

    Keras使用VGG16模型预测自己的图片 环境 Win10 Miniconda3 Pycharm2018 02 代码如下 from keras applications vgg16 import VGG16 from keras prep
  • 计算机视觉课程设计:基于Mediapipe的体感游戏设计

    演示视频 计算机视觉课程设计 基于Mediapipe的体感游戏设计 哔哩哔哩 bilibili
  • SpringCloud微服务架构标准版本拓扑图

    本图是公司需要 自己整理的SpringCloud微服务架构标准版本拓扑图 有 eddx格式 需要请私信 为了方便截了个jpg 希望对你有所帮助 喜欢的朋友点赞收藏转发
  • Cow Marathon(树的直径)(最长路)

    Cow Marathon Time Limit 2000MS Memory Limit 30000KB 64bit IO Format lld llu Submit Status Description After hearing abou