【USACO】 奶牛政坛
【题目链接】
【算法】
tarjan算法求LCA
【代码】
#include<bits/stdc++.h>
#define MAXN 200010
#pragma GOC optimize("O2") using namespace std; int n,k,i,p,fa,q;
int a[MAXN],visit[MAXN],parent[MAXN],maxn[MAXN],
depth[MAXN],x[MAXN],y[MAXN],z[MAXN],ans[MAXN];
vector<int> son[MAXN],vec[MAXN]; int find(int x) {
if (parent[x] == x) return x;
parent[x] = find(parent[x]);
return parent[x];
} void dfs(int dep,int d) {
int i;
depth[dep] = d;
for (i = ; i < son[dep].size(); i++)
dfs(son[dep][i],d+);
} void tarjan(int u) {
int i;
parent[u] = u;
visit[u] = ;
for (i = ; i < vec[u].size(); i++) {
if (y[vec[u][i]] == u && visit[x[vec[u][i]]]) z[vec[u][i]] = find(x[vec[u][i]]);
if (x[vec[u][i]] == u && visit[y[vec[u][i]]]) z[vec[u][i]] = find(y[vec[u][i]]);
}
for (i = ; i < son[u].size(); i++) {
if (!visit[son[u][i]]) {
tarjan(son[u][i]);
parent[son[u][i]] = u;
}
}
} int main() { scanf("%d%d",&n,&k);
for (i = ; i <= n; i++) {
scanf("%d%d",&a[i],&p);
if (p != ) son[p].push_back(i);
else fa = i;
} dfs(fa,); for (i = ; i <= n; i++) {
if (depth[i] > depth[maxn[a[i]]])
maxn[a[i]] = i;
} for (i = ; i <= n; i++) {
if (maxn[a[i]] != i) {
++q;
x[q] = maxn[a[i]];
y[q] = i;
vec[maxn[a[i]]].push_back(q);
vec[i].push_back(q);
}
} tarjan(fa); for (i = ; i <= q; i++) {
ans[a[x[i]]] = max(ans[a[x[i]]],depth[x[i]] + depth[y[i]] - * depth[z[i]]);
}
for (i = ; i <= k; i++) printf("%d\n",ans[i]); return ; }
【USACO】 奶牛政坛的更多相关文章
- 【BZOJ1776】[Usaco2010 Hol]cowpol 奶牛政坛 树的直径
[BZOJ1776][Usaco2010 Hol]cowpol 奶牛政坛 Description 农夫约翰的奶牛住在N (2 <= N <= 200,000)片不同的草地上,标号为1到N. ...
- USACO 奶牛抗议 Generic Cow Protests
USACO 奶牛抗议 Generic Cow Protests Description 约翰家的N头奶牛聚集在一起,排成一列,正在进行一项抗议活动.第i头奶牛的理智度 为Ai,Ai可能是负数.约翰希望 ...
- [bzoj1776][Usaco2010 Hol]cowpol 奶牛政坛_倍增lca
[Usaco2010 Hol]cowpol 奶牛政坛 题目大意: 数据范围:如题面. 题解: 第一想法是一个复杂度踩标程的算法..... 就是每种政党建一棵虚树,然后对于每棵虚树都暴力求直径就好了,复 ...
- [USACO]奶牛会展(背包)
[USACO]奶牛会展 题目背景 奶牛想证明它们是聪明而风趣的.为此,贝西筹备了一个奶牛博览会,她已经对N 头奶牛进行 了面试,确定了每头奶牛的智商和情商. 题目描述 贝西有权选择让哪些奶牛参加展览. ...
- COGS——T 803. [USACO Hol10] 政党 || 1776: [Usaco2010 Hol]cowpol 奶牛政坛
http://www.lydsy.com/JudgeOnline/problem.php?id=1776||http://cogs.pro/cogs/problem/problem.php?pid=8 ...
- usaco 奶牛接力
Description 为增强体质,约翰决定举办一场奶牛接力跑比赛.比赛现场有一些接力位置,这些位置间有T条路连接,第i条路的长度为Li. 有N头奶牛需要参加比赛,领头的奶牛从位置S出发,她会按照你的 ...
- usaco 奶牛集会 && 奶牛抗议
奶牛集会 Description 约翰家的N头奶牛每年都会参加“哞哞大会” .哞哞大会是世界奶牛界的盛事.集会上 的活动很多,比如堆干草,跨栅栏,摸牛仔的屁股等等.当然,哞哞大叫肯定也包括在内. 奶牛 ...
- USACO奶牛博览会(DP)
Description 奶牛想证明他们是聪明而风趣的.为此,贝西筹备了一个奶牛博览会,她已经对N头奶牛进行了面试,确定了每头奶牛的智商和情商. 贝西有权选择让哪些奶牛参加展览.由于负的智商或情商会造成 ...
- USACO奶牛赛跑(逆序对)
Description 约翰有 N 头奶牛,他为这些奶牛准备了一个周长为 C 的环形跑牛场.所有奶牛从起点同时起跑,奶牛在比赛中总是以匀速前进的,第 i 头牛的速度为 Vi.只要有一头奶牛跑完 L 圈 ...
随机推荐
- nginx的配置文件 【nginx.conf】
#user nobody; worker_processes 1; #error_log logs/error.log; #error_log logs/error.log notice; #erro ...
- Django实现的博客系统中使用富文本编辑器ckeditor
操作系统为OS X 10.9.2,Django为1.6.5. 1.下载和安装 1.1 安装 ckeditor 下载地址 https://github.com/shaunsephton/django-c ...
- .Net Core下使用RabbitMQ比较完备的两种方案(虽然代码有点惨淡,不过我会完善)
一.前言 上篇说给大家来写C#和Java的方案,最近工作也比较忙,迟到了一些,我先给大家补上C#的方案,另外如果没看我上篇博客的人最好看一下,否则你可能看的云里雾里的,这里我就不进行具体的方案 ...
- 洛谷—— P1605 迷宫
P1605 迷宫 题目背景 迷宫 [问题描述] 给定一个N*M方格的迷宫,迷宫里有T处障碍,障碍处不可通过.给定起点坐标和 终点坐标,问: 每个方格最多经过1次,有多少种从起点坐标到终点坐标的方案.在 ...
- Centos7安装完成后一些基本操作
1.基本操作一:主机名 # centos7有一个新的修改主机名的命令hostnamectl hostnamectl set-hostname --static www.node1.com # 有些命令 ...
- ByteArrayInputStream的作用,和BufferedOutputStream 的区别
个人好奇ByteArrayInputStream,到底是有什么用于是百度了一些资料 整合了下,********这两个类对于要创建临时性文件的程序以及网络数据的传输.数据压缩后的传输等可以提高运行的的效 ...
- python 学习笔记 13 -- 经常使用的时间模块之time
Python 没有包括相应日期和时间的内置类型.只是提供了3个相应的模块,能够採用多种表示管理日期和时间值: * time 模块由底层C库提供与时间相关的函数.它包括一些函数用于获取时钟时间和处 ...
- SolidEdge 工程图中如何快速将同一类元素放到同一个图层
在图层选项卡中新建一个尺寸线图层 点击聪慧选项(把它点凹下去),然后点击任意尺寸线,弹出聪慧选取选项,点击确定,则自动选择了所有尺寸线 点击移动图元,把刚才选中的所有尺寸线都移动到这个图层即可 ...
- 【微信支付】分享一个失败的案例 跨域405(Method Not Allowed)问题 关于IM的一些思考与实践 基于WebSocketSharp 的IM 简单实现 【css3】旋转倒计时 【Html5】-- 塔台管制 H5情景意识 --飞机 谈谈转行
[微信支付]分享一个失败的案例 2018-06-04 08:24 by stoneniqiu, 2744 阅读, 29 评论, 收藏, 编辑 这个项目是去年做的,开始客户还在推广,几个月后发现服务器已 ...
- HDU 2049 不容易系列之(4)——考新郎 (递推,含Cmn公式)
不容易系列之(4)——考新郎 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)To ...