题目:

这题意。。。还以为他说的线段是路径

写了好久的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]旅游的更多相关文章

  1. [洛谷P2610] [ZJOI2012]旅游

    洛谷题目链接:[ZJOI2012]旅游 题目描述 到了难得的暑假,为了庆祝小白在数学考试中取得的优异成绩,小蓝决定带小白出去旅游~~ 经过一番抉择,两人决定将T国作为他们的目的地.T国的国土可以用一个 ...

  2. [ZJOI2012]旅游(树的直径)

    [ZJOI2012]旅游 题目描述 到了难得的暑假,为了庆祝小白在数学考试中取得的优异成绩,小蓝决定带小白出去旅游~~ 经过一番抉择,两人决定将T国作为他们的目的地.T国的国土可以用一个凸N边形来表示 ...

  3. [bzoj2657][Zjoi2012]旅游 journey_ 对偶图_树形dp

    旅游 bzoj-2657 Zjoi-2012 题目大意:题目链接 注释:$1\le K\le 2\cdot 10^5$. 想法:这题... 感觉和上一个题的提示有些类似,就是题目生怕你不知道这是一道对 ...

  4. P2610 [ZJOI2012]旅游

    题目描述 到了难得的暑假,为了庆祝小白在数学考试中取得的优异成绩,小蓝决定带小白出去旅游~~ 经过一番抉择,两人决定将T国作为他们的目的地.T国的国土可以用一个凸N边形来表示,N个顶点表示N个入境/出 ...

  5. BZOJ2657:[ZJOI2012]旅游——题解

    http://www.lydsy.com/JudgeOnline/problem.php?id=2657 https://www.luogu.org/problemnew/show/P2610 到了难 ...

  6. BZOJ2657 [Zjoi2012]旅游(journey) 【树的直径】

    题目 到了难得的暑假,为了庆祝小白在数学考试中取得的优异成绩,小蓝决定带小白出去旅游~~ 经过一番抉择,两人决定将T国作为他们的目的地.T国的国土可以用一个凸N边形来表示,N个顶点表示N个入境/出境口 ...

  7. P2610 [ZJOI2012]旅游 树的直径

    这个题就是建图不太好建,但是我们一想,三角形貌似只能两两挨着,最后会变成一个二叉树,所以问题就变成求树的直径.建图用pair套map超级简单. 题干: 到了难得的暑假,为了庆祝小白在数学考试中取得的优 ...

  8. 【题解】P2610 [ZJOI2012]旅游

    link 题意 T国的国土可以用一个凸N边形来表示,包含 \(N-2\) 个城市,每个城市都是顶点为 \(N\) 边形顶点的三角形,两人的旅游路线可以看做是连接N个顶点中不相邻两点的线段.问一路能经过 ...

  9. bzoj2657: [Zjoi2012]旅游(journey)

    求树的直径 真是太神辣 #include<cstdio> #include<cstring> #include<cstdlib> #include<algor ...

随机推荐

  1. springboot(七)邮件服务

    简单使用 发送邮件应该是网站的必备功能之一,什么注册验证,忘记密码或者是给用户发送营销信息.最早期的时候我们会使用JavaMail相关api来写发送邮件的相关代码,后来spring退出了JavaMai ...

  2. entity framework 时间操作

    ).FirstOrDefault(); if (useractiveentity == null) { UserActive userActive = new UserActive(); userAc ...

  3. 线程异步操作,更新其中一个报错不影响另一个的运行(Task )

    //子系统同步更新                BD001_BLL bll = new BD001_BLL();                List<BD001_Model> lis ...

  4. luogu P4568 [JLOI2011]飞行路线

    传送门 看到免费次数\(k\)最多只有10,可以考虑构建\(k+1\)层的分层图,即每一层正常连边,上下两层对应点连边权为0的单向边,最后对所有层里面的\(di_t\)取\(\max\)救星了 #in ...

  5. 第18月第2天 ios博客

    1. github https://githuber.cn/search?language=Objective-C https://www.jianshu.com/u/815d10a4bdce htt ...

  6. WARN bzip2.Bzip2Factory: Failed to load/initialize native-bzip2 library system-native, will use pure-Java version

    [root@hdp2 /root]#hadoop checknative -a 18/12/09 00:31:19 WARN bzip2.Bzip2Factory: Failed to load/in ...

  7. Python字符串解析方法汇总

    Python字符串方法解析 1.capitalize 将首字母大写,其余的变成小写 print('text'.capitalize()) print('tExt'.capitalize()) 结果: ...

  8. kali linux 下搭建git服务器

    参考:http://www.cnblogs.com/dee0912/p/5815267.html https://www.liaoxuefeng.com/wiki/001373951630592960 ...

  9. java 多线程二

    java 多线程一 java 多线程二 java 多线程三 java 多线程四 线程中断: /** * Created by root on 17-9-30. */ public class Test ...

  10. NMS和soft-nms算法

    非极大值抑制算法(nms) 1. 算法原理 非极大值抑制算法(Non-maximum suppression, NMS)的本质是搜索局部极大值,抑制非极大值元素. 2. 3邻域情况下NMS的实现 3邻 ...