首页 > 其他分享 >7.11 图联通

7.11 图联通

时间:2023-07-22 12:11:24浏览次数:45  
标签:度数 连通 联通 7.11 text 个数 圆点 直径

传送门

P3436 [POI2006] PRO-Professor Szu

题意描述不太清楚,就算到达 \(n\) 可绕一圈再回来,且数据里图不连通。考虑先求出强连通分量,缩完点后建反图在 \(\text{DAG}\) 上跑 \(\text{dp}\) 计数,注意只记那些从 \(n\) 点开始可达的,如果路径上有一个强连通分量里有边,意味着可以在这个强连通分量里反复走环,它及它的后继都是 \(\text{inf}\)。(输出方案时的点是原图中的,而非缩完点后的)

[ARC092F] Two Faced Edges

求强连通分量,缩点。考虑缩点后 \(\text{DAG}\) 上一条边 \(v \to u\),翻转后强连通分量个数只能减少,且当且仅当 \(v\) 到 \(u\) 还有一条不经过这个边的路径,以每一个点为起点做一遍拓扑 \(O(n \times (n + m))\) 求出。而对于一个强连通分量里的边 \(v \to u\),翻转后改变数量当且仅当 \(v \to u\) 是 \(v\) 到 \(u\) 的必经边。考虑怎么求,以每个点为起点顺序枚举它的出边(编号为 \(1\) 到 \(k\)),\(\text{dfs}\) 到每个点记录第一次到该点时来源的起点出边编号,再倒序枚举一次起点出边做一遍 \(\text{dfs}\),若两次起点 \(v\) 到 \(u\) 的出边编号相同,则该边为必经边,复杂度同样为\(O(n \times (n + m))\)。

P3469 [POI2008] BLO-Blockade

自然可以建圆方树做,但没必要。如果删的不是割点,答案一定是 \((n-1) \times 2\),如果是割点,设分割出的子树集合是 \(S\),那么答案是 \(S\) 中的子树大小两两相乘再加 \((n-1) \times 2\),化简以后是 \(n^2-1- \sum_{i \in S} size_i^2\)。考虑 \(\text{tarjan}\) 走的是一颗搜索树,可以在 \(\text{tarjan}\) 过程中顺便求。

P2860 [USACO06JAN] Redundant Paths G

对于割边两端的点势必只有一条路径。先求边双,缩点后变为一棵树。结论是树上度数为 \(1\) 的点的个数除以 \(2\) 向上取整。

证明:设度数为 \(1\) 的点的集合为 \(S\), 若 \(|S|\) 为偶数,最后连的边数为 \(\frac{|S|}{2}\),即两个一组对应连边,每次连完边后重新缩点度数为 \(1\) 的点减少 \(2\),如果一次连边后度数只减少 \(1\),对应的情况只能是一个度数为 \(3\) 的点下连 \(2\) 条链和一棵子树,连了 \(2\) 条链的端点,这时只要任选一条链的端点与那棵子树中的一个度数为 \(1\) 的点连就可避免这种情况。若 \(|S|\) 为奇数,任选一个度数为 \(1\) 的点连边转化为 \(|S|\) 为偶数的情况。

CF51F Caterpillar

shaber 翻译

一开始看翻译数据范围 \(n \le 20000\),很奇怪,但自信 \(O(n)\),快写完时wy提醒我是 \(n \le 2000\),瞬间破防。但自信写完交,发现直接找直径会漏掉有很多条直径的情况,瞬间破防。

发现答案分为 \(3\) 部分,把所有连通块连在一起,把边双缩成一个点,把挂在直径上的树缩到直径上。但 \(O(n^2)\) 我不会啊,充分利用人类智慧,随机几条直径跑,事实证明正确率非常高。

后来发现确实可以 \(O(n)\),子树缩到直径上的代价是 \(siz_i-cnt_i\),其中 \(siz_i\) 为子树大小,\(cnt_i\) 为子树中叶子节点个数。发现这个东西整体考虑非常好求,只跟直径长短和叶子个数有关。

P4606 [SDOI2018] 战略游戏

摧毁的点一定得是割点,否则图还联通。并且摧毁这个点后标记点应在不同的连通块里。这个问题在原图上不好做,求完点双缩点后每次要找标记点在哪个点双里,也比较复杂,于是考虑建圆方树。答案便是圆方树上标记点组成的连通块中圆点个数减去标记点个数。这时候可以一棵虚树直接拍上去,但码量太大了,想一想有没有智慧一点的方法。发现把标记点(假设有 \(k\) 个)按 \(\text{dfs}\) 序排序,每次在相邻两点间(包括第 \(1\) 个点和第 \(k\) 个点)的路径边上加 \(1\),最后可以发现每条边恰经过两次,由于要求圆点个数,可以把圆方树上圆点到父亲的边边权赋为 \(1\),方点到父亲的边边权赋为 \(0\),根是圆点要特判加上 \(2\)。

CF487E Tourists

建圆方树,每个方点上开一个 \(\text{multiset}\),由于圆方树是一棵非常好的树,每个 \(\text{multiset}\) 里存方点的儿子们的值,每次查两点间路径就能覆盖到所有经过的圆点,除了当 \(\text{lca}\) 为方点时,要加上方点的父亲(没记录进去的的圆点)。在圆方树上树剖实现修改、查询。

标签:度数,连通,联通,7.11,text,个数,圆点,直径
From: https://www.cnblogs.com/Semorius/p/17573121.html

相关文章

  • 7/11图联通
    7/11PRO-ProfessorSzu题意:给定有向图,有重边有自环,从\(1\simn\)中而每个点出发到达\(n+1\)不同的路径数,问那些点的路径数最多(重边算不同边,自环算不同点)。如果路径数大于36500,输出"zawsze"。先缩点,再拓扑。设\(f_{u}\)为这个强连通分量里的点的答案,如果强连通分量里的......
  • 图联通
    P3436[POI2006]PRO-ProfessorSzu求scc后变为DAG,随便dp就好了。吐槽数据不对题面,细节巨多。但是肯定不够紫题。P3469[POI2008]BLO-Blockade500年前就做过了,又写了一遍,用了圆方树逃课。就是树上经过每个点的路径数量。P2860[USACO06JAN]RedundantPathsG好题。边......
  • 7.11
    去了贺兰沉浸式演绎里的温泉,大大小小几十个不同种类的温泉,里面还有室内水上乐园,感觉去的非常值,泡完温泉出来看了各种各样的演绎,还和演员合照了,表演的老银川娶妻从抛绣球到拜堂,西域训蛇也非常的好看,还可以近距离和蛇互动;西方特色的美人鱼表演也很好看;最为震撼的是最后的各个部落归......
  • 2023.7.11
    今天早起,匆匆忙忙吃了两口饭就匆匆忙忙赶去驾校真是牛的,两口饭挺了大半天驾校有个一姐热情的嘞,还一起唠嗑来着,后来还把她的面包分给我一半今天学了三个项目,应该差不多都可以记住了17号就去考试了,希望我可以一把过喽明天依旧早起练车,加油,挺过这几天就好啦! ......
  • 2023.7.11
    今天村里的舅妈突然来访,七八点就敲开我家的门,说是有个大舅公庆生去吃酒,我说家里还有些剩菜,可以去吃个下午饭,他们也勉强同意了,我就回了房间坐了一会儿,然后开始了刷短视频,渐渐有些无聊,就去厨房翻到了一个冰块格子,按照视频上的做法,简单做了一杯冰饮,非常安逸,下午没看多久就去了大舅公......
  • day11--23.7.11数据类型拓展
    publicclassDemo03{publicstaticvoidmain(String[]args){//整数拓展:进制二进制0b十进制八进制0十六进制0xinti=10;inti2=010;//八进制0inti3=0x10;//十六进制0x0-9A-F16inti4=0x11;Syst......
  • 7.11打卡
    1.java学习  ps:方法即自定义函数2.pta练习find函数对于普通数组find(开始位置,结束位置+1,要查找元素)返回所查找元素的地址,如果需要知道元素的下标,还需减去数组首地址。如果找到元素,上述表示法得到的是元素在数组中第一次出现的下标;如果找不到元素,上述表示法得到的就是数......
  • 7.11日
    凌晨和妈妈畅聊到两点半,躺在床上睡不着熬到了四点,起个大早八点半醒来收拾行李,检查行李,反复循环。十点的时候姑姑打电话叫我过去吃午饭,在家呆到十一点多我就抓紧过去了。奶奶熬的鸡汤,炒了一盘辣子鸡。中午吃完饭我就回家休息了,哥哥也上楼休息,不然他下午开车犯困(他开车很容易犯困,跑......
  • 暑假周记(7.11)
    今天上午课程进行的不错,逐渐掌握这帮小孩的能力,开始适应他们的节奏,总之上午感觉很不错。下午,非常非常生气,有一个补习班的学生是我表妹,在上课的时候公然顶撞我,虽然已经过去了四个小时,我现在仍旧怒不可遏,舅舅跟舅妈简直把她惯坏了。......
  • 2023.7.11
    1//2023.7.11周二2//for循环3publicclasstest4{5publicstaticvoidmain(String[]args)6{7//打印九九乘法表8for(inti=1;i<=9;i++)9{10for(intj=1;j<=i;j++)11{12......