当前位置: 首页 > wzjs >正文

全国做网站最好的公司深圳seo优化seo优化

全国做网站最好的公司,深圳seo优化seo优化,高级网页设计师证,wordpress改写【icpc陕西省赛】树的最大深度基环树找环的大小 [P10693 SNCPC2024] 换座位 - 洛谷 树王国在筹备着举办一次盛大的庆典! Shirost 作为树王国的庆典设计师,准备邀请 n n n 个嘉宾来参加本次庆典。庆典上一共准备了 2 n 2n 2n 个座位,一个…

【icpc陕西省赛】树的最大深度+基环树找环的大小

[P10693 SNCPC2024] 换座位 - 洛谷

树王国在筹备着举办一次盛大的庆典!

Shirost 作为树王国的庆典设计师,准备邀请 n n n 个嘉宾来参加本次庆典。庆典上一共准备了 2 n 2n 2n 个座位,一个座位最多只能坐一个人且一个人恰好坐一个座位。Shirost 初步计划将第 i i i 个嘉宾安排在第 i i i 个座位上。但是总统调查了这 n n n 个嘉宾的意愿,第 i i i 个嘉宾的心仪座位为第 a i a_i ai 个座位。但除非能坐到心仪座位上,否则他们只愿意坐在原来的座位上。总统希望 Shirost 能够修改计划,使得尽可能多的嘉宾坐在他们的心仪座位上。

形式化的讲,你需要找到长为 n n n 的数组 b i b_i bi ( 1 ≤ i ≤ n , 1 ≤ b i ≤ 2 n 1 \leq i \leq n, 1 \leq b_i \leq 2n 1in,1bi2n) 满足 ∀ i ≠ j , b i ≠ b j \forall i \neq j,b_i \neq b_j i=j,bi=bj ∀ i , b i = i \forall i, b_i=i i,bi=i b i = a i b_i=a_i bi=ai。且最大化 b i = a i b_i = a_i bi=ai 的个数。

你只需要输出最多的个数即可。

输入格式:

输入第一行为一个整数 n n n ( 1 ≤ n ≤ 1 0 5 1 \leq n \leq 10^{5} 1n105),表示总人数。

第二行 n n n 个整数 a i a_i ai ( 1 ≤ a i ≤ 2 n 1 \leq a_i \leq 2n 1ai2n),由空格隔开,表示每个人的心仪座位。


首先 i i i a i a_i ai连边建图,不难发现形成了很多的连通块。若连通块中包含了大于 n n n的点,那么该连通块中只能有一个大于 n n n的点,并且该连通块中没有环,一定是树;剩下的只能是基环树。也就是说连通块如果是树,必须有且仅有一个大于 n n n的点,否则是基环树。

对于树,反向建图遍历 n + 1 n + 1 n+1 2 n 2n 2n d f s dfs dfs求最大深度。基环树中用拓扑排序找环的大小(没有入队的点)。

#include <bits/stdc++.h>
using namespace std;const int N = 1e5 + 10, M = 2 * N;
vector<int> g[M], dg[M];
int n, res, maxn, in[M];
bool flag[M];signed main() {ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);cin >> n;for (int i = 1; i <= n; i ++) {int x;cin >> x;g[i].push_back(x);dg[x].push_back(i);in[x] ++;}auto dfs = [&](auto& dfs, int u, int dep) -> void {maxn = max(maxn, dep);flag[u] = true;for (auto &v : dg[u]) {dfs(dfs, v, dep + 1);}};auto topsort = [&]() -> void {queue<int> que;for (int i = 1; i <= n; i ++) {if (in[i] == 0 && flag[i] == false) {que.push(i);flag[i] = true;} }while (que.size()) {int t = que.front();que.pop();for (auto& u : g[t]) {if (-- in[u] == 0) {que.push(u);flag[u] = true;}}}for (int i = 1; i <= n; i ++) {if (flag[i] == false) res ++;}};for (int i = n + 1; i <= 2 * n; i ++) {maxn = 0;dfs(dfs, i, 0);res += maxn;}topsort();  cout << res << endl;return 0;
}
http://www.dtcms.com/wzjs/272521.html

相关文章:

  • 浙江信息港网证书查询seo整站怎么优化
  • 目前流行的网站分辨率做多大上海网站seo公司
  • 北京 网站设计公司关键词排名怎么做上首页
  • 做的网站如何发更新湖南企业网站建设
  • 云服务器网站配置网站seo优化价格
  • 网站打开速度慢跟什么有关系seo课程培训机构
  • 两学一做考试答案网站信息流广告投放平台
  • 可以做公司宣传的网站有哪些内容宽带营销策略
  • 北京企业官网网站建设报价自己可以做网站推广吗
  • 天元建设集团有限公司分公司宝鸡seo排名
  • 网页制作基础教程第2版葛艳玲答案武汉网站优化公司
  • 淘宝网站建设好评语有哪些网络营销公司
  • 鞍山网站制作小程序网络推广工作好吗
  • 网站评论怎么做的网络推广营销方案免费
  • 网站页面布局名称seo应用领域有哪些
  • 用vs2010做网站登入下载百度地图2022最新版
  • 黑wordpress网站中国企业培训网
  • 网站建设公司推广网站推广途径和推广要点有哪些?
  • 徐东做网站网页模板怎么用
  • 广州建网站技术长沙做优化的公司
  • 蒙阴哪有做淘宝网站的长春网站建设方案优化
  • 网站被攻击 是vps问题还是dz程序百度股市行情上证指数
  • 风景区网站建设论文范文合肥seo关键词排名
  • 网站banner图自适应农村电商平台有哪些
  • 视频制作软件免费版下载seo sem什么意思
  • 前端网站模板合肥seo网站管理
  • 做网站之前需要准备什么条件游戏交易平台
  • 劲松做网站的公司短视频平台推广
  • 建设网站需要提交什么资料武汉百度推广入口
  • 自做闪图网站百度入口官网