[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 ...
随机推荐
- java中CRUD(增删查改)底层代码的实现
java中CRUD(增删查改)底层代码的实现: package com.station.dao; import com.station.model.Product; import java.sql.* ...
- 使用bootstrap的相关配置
<html> <head> <title>java微辅导</title> <meta charset="UTF-8"/> ...
- 集大软件工程15级个人作业Week1
集大软件工程15级个人作业Week1 孙志威 201521123077 博客园主页 码云地址 阅读参考材料,并回答下面几个问题 (1)回想一下你初入大学时对网络工程专业的畅想 当初你是如何做出选择网络 ...
- 液晶数字显示屏QLCDNumbe
import sys from PyQt5.QtWidgets import QApplication, QWidget, QLCDNumber, QVBoxLayout class Demo(QWi ...
- 微信小程序开发工具的基本应用
全局配置: 1.1配置所有页面路径:在app.json的{pages:[配置所有页面]},将首页放置在第一位,在app.json必须写上所有页面的路径,要不然会报错,每个页面的wxss样式文件只在当前 ...
- Handler实现与机制 && Blocking Queue && IdleHandler使用
http://blog.csdn.net/boyupeng/article/details/46685343 IdleHandler处理消息的源码 final Message next() { ... ...
- web前端最全各类资源
链接:http://www.sohu.com/a/157593700_132276
- 解决jdk1.7,1.8共存问题小思
一 起因 随着jdk1.9呼之欲出之势,准备花点时间把jdk1.8搞掉,于是准备下一个项目的依赖改为jdk1.8,先去下载安装,安装好之后电脑上就存在两个版本的jdk.然后将两个版本的jdk路径都配置 ...
- 【Python】【辅助程序】练手小程序:记录外网动态IP地址
练手小程序 程序作用:对IP实时记录: 1.定时获取外网IP,存储在本地文件中: 编写思路: 1)收集获取外网的API接口 http://bbs.125.la/thread-1383897 ...
- Word 2017 快捷键
Ctrl + D: 呼出[字体] Ctrl + S: 进行[保存] Ctrl + F: 呼出[导航] Ctrl + D: 呼出[字体] Ctrl + B: 进行[加粗] Ctrl + G: 呼出[查找 ...