P6706 [COCI 2010/2011 #7] KUGLICE

news/2025/12/7 12:56:52/文章来源:https://www.cnblogs.com/zloi-hhq/p/19317976

洛谷

由于每一个节点最多只会连出一条边,所以一个连通的图必定是基环树或者树。

如果是基环树,那么一定会有环,且经过移动后必定在环内,直接按照有环的情况输出即可。

对于一颗树,我们可以将这一个节点连向的点视为父亲,那么最后的答案就是这棵树的根。

我们可以通过并查集来模拟建树的过程,但是拆树的过程并不好模拟,怎么办?

我们可以考虑离线操作,要拆掉的边先不连接,反过来处理就成为了建边的过程。

剩下的就是对并查集建树以及判断是否有环的简单运用了,这里就不过多说明了,可以自己看代码。

代码:

#include<bits/stdc++.h>
#define int long long
using namespace std;
int n,m,a[300005],b[300005],fa[300005];
int find(int x){if(x==fa[x])return x;return fa[x]=find(fa[x]);
}
bool merge(int x,int y){y=find(y);if(y==x)return false;fa[x]=y;return true;
}
bool f[300005];
struct Q{int op,x,res;
}q[300005];
signed main(){cin>>n;for(int i=1;i<=n;i++)cin>>a[i];for(int i=1;i<=n;i++)b[i]=a[i];cin>>m;for(int i=1;i<=m;i++)cin>>q[i].op>>q[i].x;for(int i=1;i<=m;i++){if(q[i].op==2){b[q[i].x]=0;}}for(int i=1;i<=n;i++)fa[i]=i;for(int i=1;i<=n;i++){if(!b[i])continue;if(!merge(i,b[i]))f[i]=1;}for(int i=m;i>=1;i--){if(q[i].op==1){int tmp=find(q[i].x);if(f[tmp])q[i].res=-1;else q[i].res=tmp;}else {if(!merge(q[i].x,a[q[i].x]))f[q[i].x]=1;}}for(int i=1;i<=m;i++){if(q[i].op==1){if(q[i].res==-1)puts("CIKLUS");else cout<<q[i].res<<endl;}}return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/991401.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

P3596 [POI 2015 R3] 高速公路现代化 Highway modernization

洛谷 首先对于最大值,很容易想到找一条边拆掉,然后把两个直径相连,此时最长直径就是两个树的直径和再加一。 而对于最小值,我们将拆出来的两个树找中点,把中点连起来,此时就是两个的直径折半向上取整的和加一以及…

AT_arc179_d [ARC179D] Portable Gate

AtCoder 以出发点为根,我们可以发现门一定在一个节点的祖先上,如果你走到一个点放下门,再继续走子树部分,然后去走其它子树时,一定会经过放门的这个点,那么此时这个门在这已经没有用了,如果你先去走其它子树,可…

AI Browser:我用 CC 做了个桌面版 Manus

一、项目背景 作为一名开发者,我经常需要做一些重复性的网页操作:每天采集特定网站的数据 定期检查某些信息的更新 批量处理网页表单 自动化测试这些任务虽然简单,但手动操作费时费力。我尝试过用 Puppeteer、Playwrig…

P3576 [POI 2014] MRO-Ant colony

洛谷 一个比较简单的思路,不需要二分。 考虑逆向操作,从路径两端开始处理数值范围,将蚂蚁群大小视为一次查询。 由于树的两点之间的简单路径只有一条,所以每个点的范围是唯一的。 处理时和 \(10^9\) 取最小值,因为…

flink 1.20 物化表(Materialized Tables) - 详解

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

P4953 [USACO02FEB] Cow Cycling

洛谷 一眼动态规划。 但是我们状态怎么设置? 我们分析题目,可以发现一个领头一定要开到最后,不再成为领头。 原因很简单,如果你把这只领队重新放回队尾,那么它在其它奶牛领队后跑了几圈,它最后能跑的圈数比其他没…

CF700B Connecting Universities

Codeforces 看题目如果直接从如何配对的角度去考虑的话,还是比较困难的。 但是我们不只能从点的角度入手,我们也可以尝试从边的角度入手。 一条边如果要被两个点之间的最短路径经过,那么这两个点一定分别分布在这一…

大模型算法学习

基础知识 一、NLP基础知识 1.词嵌入模型 2.序列模型 二、Transformer基础 三、预训练模型 1.BERT 2.GPT 3.T5 四、预训练技术 五、微调技术 六、强化学习

Linux——网络命令和常用服务 - 指南

Linux——网络命令和常用服务 - 指南pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monac…

用 GitHub issue 寫博客很好,但我要放棄了

這曾經是一個比火熱的寫作方式,至少在 2020 年是如此,我也是聽、看 laike9m 和 yihong618 的項目慢慢摸索的,它有很多優點,比如至少解決了如下的問題:文章託管:所有文件放在 GitHub,他的穩定性至少要比你電腦的…

P11580 [CCC2020] Escape Room

洛谷 发现直接从起点开始不好处理,可以考虑从终点倒过来处理。 假设目前在位置 \((x,y)\) 那么下一次一定是选择值为 \(x\times y\) 的区域。 那么我们开按照当前区域的值存下这个区域的位置,使用广搜处理,记录每一…

用 Astro 重做網站這件事

Astro 是什麼 核心思想是羣島架構,不同與傳統 VUE 的單頁應用,而是對於不用頁面按需加載,在網頁加載速度和架構兼容性上來說是一流。 模板的注入類似 Jekyll,但是比前者更加靈活。 Bun 是什麼 是用 Zig 語言實現的…

周边的车间厂房工厂通风降温工业冷风机源头厂家,有热源的车间通风降温/铁皮厂房车间降温/铁皮房车间厂房降温工业冷风机供应商有哪些

【苏州讯】随着全球制造业对生产环境与能耗成本的日益关注,工业厂房的通风降温问题已成为影响生产效率与企业可持续发展的关键因素。近日,记者走访了位于苏州的工业通风降温设备制造商——苏州蓝美达机电有限公司,深…

P6875 [COCI2013-2014#6] KRUŽNICE

洛谷 由样例可以知道,一个圆只贡献一个区域,而一个圆在中间被几个圆完全连接时会被分成两个部分,计算两个贡献。 那么我们很容易想到先按照左端点排序,在左端点相同时,比较半径大小。 然后从后向前连接,如果前面…

美化 BroadcastChannel

原項目設計很新穎,用 Cloudflare / Netlify / Vercel 等平臺天然支持 SSR 特性,完成了原網頁 https://t.me/s/ 的代理工作。最重要的是,這些平臺作爲中間轉發(代理),可以直接讓國內訪問到這部分內容(受衆 ++)。…

克服EMD端点效应的齿轮箱故障特征识别方法

一、EMD端点效应问题解析 1. 端点效应成因 经验模态分解(EMD)在处理非平稳信号时,通过迭代筛选极值点生成本征模态函数(IMF)。但在信号两端,由于无法确定极值点的发展趋势,导致:端点处极值点缺失,筛选过程产生虚假…

2025最新绿色低碳工厂建设五大服务商/厂家推荐!工业智能化升级权威指南,助力企业实现双碳目标与高效生产

引言 随着全球工业4.0进程加速与“双碳”战略深入推进,绿色低碳工厂建设已成为制造业转型升级的核心议题。据中国信通院《中国数字经济发展白皮书》显示,2024年我国智能制造渗透率达48.2%,但工业能耗强度仍高于发达…

北京上门回收名家字画 专访北京丰宝斋负责人徐亚南

初冬的丰宝斋,晨光透过老字号的雕花木窗,洒在一幅刚展开的清代山水卷轴上。北京丰宝斋负责人徐亚南正戴着棉纱手套,用放大镜细细审视画角的题款。“这些老物件带着几代人的温度,上门回收不仅是做交易,更是接下一份…

P6000 [CEOI2016] match

洛谷 对于暴力写法,我们很容易想到一个 \(O(n^2)\) 的暴力。 我们可以先从左到右枚举需要配对的字符,然后从后往前去找到一个合法且相同的字符配对。 对于怎样才算合法,我们通过此部分内部是否合法,以及前面是否有…

MultiButton移植记录

使用记录 使用PA0引脚,电路图如下,使用GPIO内部下拉。实际测试,很稳定,没有误触发,单击、双击、长按很稳定。移植记录复制multi_button.c和multi_button.h到工程中,实现GPIO的初始化、读取。void key_init(void)…