【题目链接】

点击打开链接

【算法】

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】 奶牛政坛的更多相关文章

  1. 【BZOJ1776】[Usaco2010 Hol]cowpol 奶牛政坛 树的直径

    [BZOJ1776][Usaco2010 Hol]cowpol 奶牛政坛 Description 农夫约翰的奶牛住在N (2 <= N <= 200,000)片不同的草地上,标号为1到N. ...

  2. USACO 奶牛抗议 Generic Cow Protests

    USACO 奶牛抗议 Generic Cow Protests Description 约翰家的N头奶牛聚集在一起,排成一列,正在进行一项抗议活动.第i头奶牛的理智度 为Ai,Ai可能是负数.约翰希望 ...

  3. [bzoj1776][Usaco2010 Hol]cowpol 奶牛政坛_倍增lca

    [Usaco2010 Hol]cowpol 奶牛政坛 题目大意: 数据范围:如题面. 题解: 第一想法是一个复杂度踩标程的算法..... 就是每种政党建一棵虚树,然后对于每棵虚树都暴力求直径就好了,复 ...

  4. [USACO]奶牛会展(背包)

    [USACO]奶牛会展 题目背景 奶牛想证明它们是聪明而风趣的.为此,贝西筹备了一个奶牛博览会,她已经对N 头奶牛进行 了面试,确定了每头奶牛的智商和情商. 题目描述 贝西有权选择让哪些奶牛参加展览. ...

  5. 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 ...

  6. usaco 奶牛接力

    Description 为增强体质,约翰决定举办一场奶牛接力跑比赛.比赛现场有一些接力位置,这些位置间有T条路连接,第i条路的长度为Li. 有N头奶牛需要参加比赛,领头的奶牛从位置S出发,她会按照你的 ...

  7. usaco 奶牛集会 && 奶牛抗议

    奶牛集会 Description 约翰家的N头奶牛每年都会参加“哞哞大会” .哞哞大会是世界奶牛界的盛事.集会上 的活动很多,比如堆干草,跨栅栏,摸牛仔的屁股等等.当然,哞哞大叫肯定也包括在内. 奶牛 ...

  8. USACO奶牛博览会(DP)

    Description 奶牛想证明他们是聪明而风趣的.为此,贝西筹备了一个奶牛博览会,她已经对N头奶牛进行了面试,确定了每头奶牛的智商和情商. 贝西有权选择让哪些奶牛参加展览.由于负的智商或情商会造成 ...

  9. USACO奶牛赛跑(逆序对)

    Description 约翰有 N 头奶牛,他为这些奶牛准备了一个周长为 C 的环形跑牛场.所有奶牛从起点同时起跑,奶牛在比赛中总是以匀速前进的,第 i 头牛的速度为 Vi.只要有一头奶牛跑完 L 圈 ...

随机推荐

  1. 属性font-family:Font property font-family does not have generic default

    以前定义字体都是用的常用的字体,也没注意过会有这个提示,昨天在写界面的时候重新定义了一个本地没有的字体,发现会有提示. W3C的文档: font-family:<family-name>, ...

  2. 洛谷——P2819 图的m着色问题

    P2819 图的m着色问题 题目背景 给定无向连通图G和m种不同的颜色.用这些颜色为图G的各顶点着色,每个顶点着一种颜色.如果有一种着色法使G中每条边的2个顶点着不同颜色,则称这个图是m可着色的.图的 ...

  3. Jetson TK1 三:项目相关安装

    ROS.QT.pyserial2.7.罗技手柄驱动.navigation.slam和rviz等 激光雷达IP设置,tk1对应的IP设置,tk1串口设置 一.安装ros参见官网 二.安装QT 百度QT官 ...

  4. CODEVS_1034 家园 网络流 最大流

    原题链接:http://codevs.cn/problem/1034/ 题目描述 Description 由于人类对自然的疯狂破坏,人们意识到在大约2300年之后,地球不能再居住了,于是在月球上建立了 ...

  5. luogu P1080 国王游戏

    题目描述 恰逢 H 国国庆,国王邀请 n 位大臣来玩一个有奖游戏.首先,他让每个大臣在左.右手上面分别写下一个整数,国王自己也在左.右手上各写一个整数.然后,让这 n 位大臣排成一排,国王站在队伍的最 ...

  6. Ubuntu官方Wiki教程资源

    前言:通常学习一样新知识时,最快的方式是通过搜索引擎然后以最快的方式拿枪上战场,如果接下来还一直依赖搜索引擎去打,那么你会发现自己永远都在打游击:那么如果要解决这个问题,必须要学会系统的学习,只有连贯 ...

  7. python 工具 FFT变换

    import numpy as npimport pylabwave_data =np.fromfile("C:\\Users\\Administrator\\Desktop\\bins\\ ...

  8. 单词number 和 numeral 的区别

    原文: http://blog.sina.com.cn/s/blog_72cd06360100vn7t.html be of 的用法,相当于表征特征或属性的形容词. 简单地说,“of + 名词”等于“ ...

  9. IOS Object和javaScript相互调用

    在IOS开发中有时会用到Object和javaScript相互调用,详细过程例如以下: 1. Object中运行javascript代码,这个比較简单,苹果提供了非常好的方法 - (NSString ...

  10. Oracle db中禁止使用sqlplus的方法

    先记录下来: How to Disable a SQL*Plus Connection for a User (文档 ID 124121.1)