天哪这道题竟然只有一篇题解!


emm,首先读题看完两个操作就已经有很明确的思路了,显然是并查集+树的直径 一波解决。

并查集不多说了,如果不了解的可以看这里.

树的直径的思路很朴实,就是两边DFS(BFS也OK)。具体先随便找一个节点,然后搜一遍,找到最远的,然后再搜一遍,这样合在一起就一定是最长的了。

不过呢这道题还是注意一下求直径的公式,具体如下:

$D_new=max(D_u,D_v,[D_u/2]+[D_v/2]+1)$

那个方括号指的是取整(没找到在哪里打出来)。

en除此之外好像没什么好说的。。。

AC代码如下:

 #include<iostream>
#include<cstdio>
#include<algorithm>
#include<vector>
using namespace std; const int maxn=; int n,m,q,max_i,max_v;
int f[maxn],len[maxn],sz[maxn];
bool used[maxn];
vector<int>g[maxn]; void dfs(int val,int depth,int pos){
if(depth>max_i){
max_i=depth;
max_v=val;
}
for(int i=;i<g[val].size();i++){
if(g[val][i]!=pos)dfs(g[val][i],depth+,val);
}
} int calc(int val){
max_i=-;
dfs(val,,-);
max_i=-;
dfs(max_v,,-);
return max_i;
} int find(int x){
if(x==f[x])return x;
return f[x]=find(f[x]);
} void merge(int x,int y){
x=find(x),y=find(y);
if(sz[x]>sz[y])swap(x,y);
sz[y]+=sz[x];
f[x]=y;
} int radius(int x){
return (len[x]+)/;
} void merge2(int x,int y){
x=find(x),y=find(y);
if(x==y)return;
if(sz[x]>sz[y])swap(x,y);
sz[y]+=sz[x];
f[x]=y;
len[y]=max(max(radius(x)+radius(y)+,len[x]),len[y]);
} int main() {
scanf("%d%d%d",&n,&m,&q);
for(int i=;i<=n;i++){
f[i]=i;
sz[i]=i;
len[i]=;
}
for(int i=;i<=m;i++){
int x,y;
scanf("%d%d",&x,&y);
g[x].push_back(y);
g[y].push_back(x);
merge(x,y);
}
for(int i=;i<=n;i++){
int p=find(i);
if(!used[p]){
used[p]=;
len[p]=calc(i);
}
}
while(q--){
int t,x,y;
scanf("%d",&t);
if(t==){
scanf("%d",&x);
printf("%d\n",len[find(x)]);
}else{
scanf("%d%d",&x,&y);
merge2(x,y);
}
}
}

题解 P2195 【HXY造公园】的更多相关文章

  1. 洛谷 P2195 HXY造公园

    P2195 HXY造公园 题目描述 现在有一个现成的公园,有n个休息点和m条双向边连接两个休息点.众所周知,HXY是一个SXBK的强迫症患者,所以她打算施展魔法来改造公园并即时了解改造情况.她可以进行 ...

  2. 洛谷 P2195 HXY造公园 解题报告

    P2195 HXY造公园 题目描述 现在有一个现成的公园,有\(n\)个休息点和\(m\)条双向边连接两个休息点.众所周知,\(HXY\)是一个\(SXBK\)的强迫症患者,所以她打算施展魔法来改造公 ...

  3. 【luogu P2195 HXY造公园】 题解

    题目链接:https://www.luogu.org/problemnew/show/P2195 fir.吐槽题目(省略1w字 sec.考虑对一个森林的维护,每棵树用并查集维护. 操作1:输出当前查询 ...

  4. CF455C Civilization | luogu HXY造公园

    题目链接: https://www.luogu.org/problemnew/show/P2195 http://codeforces.com/contest/455/problem/C 显然我们可以 ...

  5. 【题解】NOIP2017逛公园(DP)

    [题解]NOIP2017逛公园(DP) 第一次交挂了27分...我是不是必将惨败了... 考虑这样一种做法,设\(d_i\)表示从该节点到n​节点的最短路径,\(dp(i,k)\)表示从\(i\)节点 ...

  6. NOIP前刷题记录

    因为本蒻实在太蒻了...对于即将到来的NOIP2018ssfd,所以下决心要把自己近期做过的题目(衡量标准为洛谷蓝题难度或以上)整理一下,归归类,简单地写一下思路,就当作自己复习了吧qwq 本随笔持续 ...

  7. NOIP刷题

    搜索 [NOIP2013]华容道 最短路+带剪枝的搜索,是一个思维难度比较大的题目. CF1064D Labyrinth 考虑贪心,用双向队列bfs [NOIP2017]宝藏 剪枝搜索出奇迹 题解:h ...

  8. 【图论 动态规划拆点】luoguP3953 逛公园

    经典的动态规划拆点问题. 题目描述 策策同学特别喜欢逛公园.公园可以看成一张 NN 个点 MM 条边构成的有向图,且没有 自环和重边.其中1号点是公园的入口, NN 号点是公园的出口,每条边有一个非负 ...

  9. poj1083 贪心

    K - 简单dp Crawling in process... Crawling failed Time Limit:1000MS     Memory Limit:10000KB     64bit ...

随机推荐

  1. 优动漫PAINT-简单的树、叶教学

    如题,简单.好用:其实说的还是一个观察的事.看你是否足够细心,对于树叶的生长.枝桠和树干的关系是否了解咯. 对于这样的树枝丫和叶子完全可以使用优动漫PAINT完成,简单又快捷,软件下载:www.don ...

  2. SASS 使用(安装)

    一.安装SASS 1.sass基于Ruby语言开发而成,因此安装sass前需要安装Ruby.(注:mac下自带Ruby无需在安装Ruby!) 2.安装过程中请注意勾选Add Ruby executab ...

  3. luoguP1555 尴尬的数字(暴力+map)

    题意 题解 枚举每一个可能的二进制数.扔到一个map里 再枚举每一个可能的三进制数看map有没有就行了 反正就是很水 #include<iostream> #include<cstr ...

  4. springboot 错误页面的配置

    springboot的错误页面,只需在templates下新建error文件夹,将404.500等错误页面放进去即可, springboot会自动去里面查找

  5. POJ——T 3041 Asteroids

    http://poj.org/problem?id=3041 Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 23565   ...

  6. 洛谷 P2209 [USACO13OPEN]燃油经济性Fuel Economy

    P2209 [USACO13OPEN]燃油经济性Fuel Economy 题目描述 Farmer John has decided to take a cross-country vacation. ...

  7. DataTable 数据导入MS ACCESS 数据库中 数字类型字段为空的解决办法

    string strSql = "insert into GongCheng (GCSY,GCBH,GCBHOLD,GCMC,GCKCJD,GCJSDW,GCSJDW,GCKCDW,GCSG ...

  8. Oracle 切割字符查询

    Oracle 切割字符查询 select * from view_psbaseinfo where DECODE('410782001125,411100000043', '', NULL, '410 ...

  9. SCN 时间戳的相互转换

    SQL> select * from v$version where rownum=1; BANNER --------------------------------------------- ...

  10. Cannot set web app root system property when WAR file is not expanded

    Cannot set web app root system property when WAR file is not expanded 在tomcat下面可以,在weblogic下面不行的处理方法 ...