求树的直径 真是太神辣

 #include<cstdio>
#include<cstring>
#include<cstdlib>
#include<algorithm>
#include<iostream> using namespace std; template<typename Q> Q &read(Q &x) {
static char c, f;
for(f = ; c = getchar(), !isdigit(c); ) if(c == '-') f = ;
for(x = ; isdigit(c); c = getchar()) x = x * + c - '';
if(f) x = -x; return x;
}
template<typename Q> Q read() {
static Q x; read(x); return x;
} const int N();
int n; bool neighbor(int a, int b) {
return abs(a - b) == || abs(a - b) == n - ;
} #include<map>
map<pair<int, int>, int> mp;
int ID(int u, int v) {
if(u > v) swap(u, v);
if(mp.count(make_pair(u, v))) return mp[make_pair(u, v)];
return mp[make_pair(u, v)] = mp.size();
} int no[N]; #include<vector>
vector<int> G[N]; void AddEdge(int u, int v) {
G[u].push_back(v);
G[v].push_back(u);
} int q[N], ql, qr, dep[N]; void BFS(int s) {
ql = qr = ;
memset(dep, , sizeof dep);
q[qr++] = s, dep[s] = ;
while(ql < qr) {
int u = q[ql++];
for(unsigned i = ; i < G[u].size(); i++) {
int v = G[u][i];
if(!dep[v]) {
q[qr++] = v;
dep[v] = dep[u] + ;
}
}
}
} int main() {
#ifdef DEBUG
freopen("in.txt", "r", stdin);
freopen("out.txt", "w", stdout);
#endif scanf("%d", &n);
for(int i = ; i <= n - ; i++) {
int a[];
for(int j = ; j < ; j++) scanf("%d", a + j);
a[] = a[];
for(int j = ; j < ; j++) {
if(!neighbor(a[j], a[j+])) {
int id = ID(a[j], a[j+]);
if(no[id]) AddEdge(no[id], i);
else no[id] = i;
}
}
} BFS(), BFS(q[qr - ]);
printf("%d\n", dep[q[qr - ]]); return ;
}

bzoj2657: [Zjoi2012]旅游(journey)的更多相关文章

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

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

  2. BZOJ2657: [Zjoi2012]旅游(journey) (树形DP)

    题意:一个三角划分的凸多边形 画一条对角线 穿过最多的三角形 题解:把每一个三角形看作一个点 如果某条边是两个三角形的公共边 那么就把这两个三角形连边 然后问题就转化为求树上的最长链了 就当求个直径就 ...

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

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

  4. 【BZOJ】2657: [Zjoi2012]旅游(journey)(树的直径)

    题目 传送门:QWQ 分析 在任意两个不相邻的点连一条线,求这条线能穿过几个三角形. 建图比较讲究(详见代码) 求树的直径. 代码 #include <bits/stdc++.h> usi ...

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

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

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

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

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

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

  8. P2610 [ZJOI2012]旅游

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

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

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

随机推荐

  1. 学习protobuf

    一.认识Protobuf ref:http://blog.csdn.net/program_think/article/details/4229773摘要:1. protobuf是一个开源项目.2. ...

  2. 一段C++代码想到的问题

    今天在学习<Unix环境高级编程>,第七章进程环境给出了一个进程的内存分布示意图,从下往上依次为“正文段->初始化数据->未初始化数据(默认初始化为0)->堆(从低地址到 ...

  3. ACM HDU Primes(素数判断)

    Problem Description Writea program to read in a list of integers and determine whether or not eachnu ...

  4. 转载 VC 2010下安装OpenCV2.4.4

    说明: 1.安装平台:32位XP,VS2010: 2.OpenCV 2.4.4不支持VC 6.0: 3.网上有很多用CMake编译OpenCV的安装教程,这里建议先不要自己编译,如果使用预编译好的库有 ...

  5. Java之字符串学习

    java中String的使用十分频繁,是我们要学习的重点,在说String之前,我们要知道堆跟栈的区别. java中的数据类型分原生数据类型(primitived types)有八种(byte,cha ...

  6. 过滤HTML

    过滤HTML public static string NoHTML(string html){ string[] strArray2 = new string[] { "font" ...

  7. jquery 中 form的使用

    纠结了一下 form 表单的提交响应事件,因为在表单中,form标签会让浏览器自动提交,而我一直写的是 $(".btn").click(function()) 提交按钮的响应事件, ...

  8. 利用def生成dll文件

    DLL中导出函数的声明有两种方式:一种为在函数声明中加上__declspec(dllexport),这里不再举例说明:另外一种方式是采用模块定义(.def) 文件声明,.def文件为链接器提供了有关被 ...

  9. CENTOS elasticsearch plugin install:Failed: SSLException[java.security.ProviderException,解决

    安装Elasticsearch插件时总报SSLException yum upgrade nss 解决

  10. ASP.NET MVC轻教程 Step By Step 6——改进表单

    上一节我们使用原始的HTML表单来完成留言功能,但是ASP.NET MVC提供了丰富的HTML辅助方法来帮助我们构建更简洁优雅的表单. Step 1. 修改Form标签 首先,我们可以使用Html.B ...