[CF732F]Tourist Reform

阅读: 评论:0

[CF732F]Tourist Reform

[CF732F]Tourist Reform

Tourist Reform

题解

很容易发现,对于任意一个边双连通分量,一定存在一种方法使得这个连通分量内的任意两点可以互相到达。

于是将连通分量缩点后我们得到了一棵树,因为总共只有条边,所以必定有一个连通分量无法到达其它的连通分量,而若将它作为树的根,将所有的儿子连向它的父亲,则其余点一定可以到达它,其价值一定比它大。为了使最小价值最大,我们需要选取整体价值最大的一个连通作为根。

由于tarjan算法是一个dfs式的结构,在一个连通分量内我们如果重新到达了一个点,一定是形成了一个环,将环接上即可保证这个边双连通分量将转化为一个连通分量。

所以,我们只要通过dfs反向构造一个环即可。

源码

#include<bits/stdc++.h>
using namespace std;
#define MAXN 400005
typedef long long LL;
typedef unsigned long long uLL;
const LL mo=1e9+7;
typedef pair<int,int> pii;
template<typename _T>
_T Fabs(_T x){return x<0?-x:x;}
template<typename _T>
void read(_T &x){_T f=1;x=0;char s=getchar();while(s>

本文发布于:2024-01-28 14:56:00,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/17064249678220.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

上一篇:H
下一篇:Tourist's Notes
标签:CF732F   Tourist   Reform
留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23