[ZJOI2012]旅游
题目:
这题意。。。还以为他说的线段是路径
写了好久的dp。。写不出来
看了网上的题解。。才知道就是两点连线
然后就是一般的平面图转对偶图的思想
然后算一下边数发现是颗树,求一下直径就好了
代码:
#include <bits/stdc++.h>
using namespace std;
#define mo 5000007
int n,c,d,e,l,ans,head[];
int len1[],len2[];
struct re{
int x,y,c;
}pd[];
struct {
int a,b;
}a[];
void insert(int x,int y,int z)
{
int tmp=((*x+y)%mo+mo)%mo;
while (pd[tmp].x) tmp=tmp%mo+;
pd[tmp].x=x; pd[tmp].y=y; pd[tmp].c=z;
}
int find(int x,int y)
{
int tmp=((*x+y)%mo+mo)%mo;
while (!(pd[tmp].x==x&&pd[tmp].y==y)&&pd[tmp].x) tmp=tmp%mo+;
if (pd[tmp].x==x&&pd[tmp].y==y) return(pd[tmp].c);
else return -;
}
void arr(int x,int y)
{
a[++l].a=head[x];
a[l].b=y;
head[x]=l;
}
void dfs(int x,int fa)
{
int u=head[x];
while (u)
{
int v=a[u].b;
if (v!=fa)
{
dfs(v,x);
if (len1[v]>len1[x])
{
len2[x]=len1[x];
len1[x]=len1[v];
} else
if (len1[v]>len2[x])
{
len2[x]=len1[v];
}
}
u=a[u].a;
}
len1[x]++;
ans=max(ans,len1[x]+len2[x]);
}
int main()
{
cin>>n;
for (int i=;i<=n-;i++)
{
cin>>c>>d>>e;
int x1=find(c,d);
int x2=find(c,e);
int x3=find(d,e);
if (x1==-) insert(c,d,i),insert(d,c,i);
else arr(x1,i),arr(i,x1);
if (x2==-) insert(c,e,i),insert(e,c,i);
else arr(x2,i),arr(i,x2);
if (x3==-) insert(d,e,i),insert(e,d,i);
else arr(x3,i),arr(i,x3);
}
dfs(,);
cout<<ans;
}
[ZJOI2012]旅游的更多相关文章
- [洛谷P2610] [ZJOI2012]旅游
洛谷题目链接:[ZJOI2012]旅游 题目描述 到了难得的暑假,为了庆祝小白在数学考试中取得的优异成绩,小蓝决定带小白出去旅游~~ 经过一番抉择,两人决定将T国作为他们的目的地.T国的国土可以用一个 ...
- [ZJOI2012]旅游(树的直径)
[ZJOI2012]旅游 题目描述 到了难得的暑假,为了庆祝小白在数学考试中取得的优异成绩,小蓝决定带小白出去旅游~~ 经过一番抉择,两人决定将T国作为他们的目的地.T国的国土可以用一个凸N边形来表示 ...
- [bzoj2657][Zjoi2012]旅游 journey_ 对偶图_树形dp
旅游 bzoj-2657 Zjoi-2012 题目大意:题目链接 注释:$1\le K\le 2\cdot 10^5$. 想法:这题... 感觉和上一个题的提示有些类似,就是题目生怕你不知道这是一道对 ...
- P2610 [ZJOI2012]旅游
题目描述 到了难得的暑假,为了庆祝小白在数学考试中取得的优异成绩,小蓝决定带小白出去旅游~~ 经过一番抉择,两人决定将T国作为他们的目的地.T国的国土可以用一个凸N边形来表示,N个顶点表示N个入境/出 ...
- BZOJ2657:[ZJOI2012]旅游——题解
http://www.lydsy.com/JudgeOnline/problem.php?id=2657 https://www.luogu.org/problemnew/show/P2610 到了难 ...
- BZOJ2657 [Zjoi2012]旅游(journey) 【树的直径】
题目 到了难得的暑假,为了庆祝小白在数学考试中取得的优异成绩,小蓝决定带小白出去旅游~~ 经过一番抉择,两人决定将T国作为他们的目的地.T国的国土可以用一个凸N边形来表示,N个顶点表示N个入境/出境口 ...
- P2610 [ZJOI2012]旅游 树的直径
这个题就是建图不太好建,但是我们一想,三角形貌似只能两两挨着,最后会变成一个二叉树,所以问题就变成求树的直径.建图用pair套map超级简单. 题干: 到了难得的暑假,为了庆祝小白在数学考试中取得的优 ...
- 【题解】P2610 [ZJOI2012]旅游
link 题意 T国的国土可以用一个凸N边形来表示,包含 \(N-2\) 个城市,每个城市都是顶点为 \(N\) 边形顶点的三角形,两人的旅游路线可以看做是连接N个顶点中不相邻两点的线段.问一路能经过 ...
- bzoj2657: [Zjoi2012]旅游(journey)
求树的直径 真是太神辣 #include<cstdio> #include<cstring> #include<cstdlib> #include<algor ...
随机推荐
- Python面向对象-day07
写在前面 上课第七天,打卡: 时间的高效利用: 前言: 今天egon老师补充了下 is 和 == 的区别,整理如下:Python中变量的属性以及判断方法 一.面向过程和面向对象 - 1.面向过程 核心 ...
- 集大软件工程15级个人作业Week2
集大软件工程15级个人作业Week2 快速通读教材<构建之法>,并参照提问模板,提出5个问题. 在每个问题后面,请说明哪一章节的什么内容引起了你的提问,提供一些上下文 列出一些事例或资料, ...
- 单行纯文本框QLineEdit
继承 QWidget 天子骄龙
- Netty入门(1) - 简介
什么是Netty? Netty 是一个利用 Java 的高级网络的能力,隐藏其背后的复杂性而提供一个易于使用的 API 的客户端/服务器框架. Tomcat和Netty有什么区别? Netty和Tom ...
- (原创)高仿360云盘android端的UI实现
前些日子几大互联网巨头展开了一轮网盘空间大战.一下子从G级别提高到了T级别.以后谁的空间没有1T估计都不好意思开口了~~~ 试用了一下360云盘的客户端,比较小清新(不是给360打广告~~~).刚好U ...
- ubuntu16.10安装docker17.03.0-ce并配置国内源和加速器
说明:这个针对docker-ce安装,ce和ee的区别是前者是社区版,后者是企业版 1. 配置Ubuntu的源,不然慢的去哭吧.参考http://cn.archive.ubuntu.com/help ...
- .Net Core中使用RabbitMQ
(1).引入依赖 RabbitMQ.Client (2).编写发布者代码 var connectionFactory = new ConnectionFactory() { HostName=&quo ...
- 基于XML搭建Dubbo项目
(1).新建一个普通Maven项目,用于存放一些公共服务接口及公共的Bean等. 公共Bean: package cn.coreqi.entities; import java.io.Serializ ...
- SpringMVC使用Redis作为缓存提供者
(1)pom添加依赖项 <dependency> <groupId>org.springframework.data</groupId> <artifactI ...
- MFC_CFileDialog_选择文件夹
场景 在MFC中有时候只需要选择一个文件夹而不需要选择文件,这时候可以通过下列方式来进行选择 技术点 BROWSEINFO typedef struct_browseinfo { HWND hwndO ...