BZOJ 4238: 电压 DFS树】的更多相关文章

分类讨论一下奇环和偶环的情况. code: #include <bits/stdc++.h> #define N 200006 #define setIO(s) freopen(s".in","r",stdin) using namespace std; int edges=1; int hd[N],to[N<<1],nex[N<<1],dep[N],ev[N],od[N],fa[N<<1],vis[N<<…
BZOJ 4238 电压 考虑一条边成为答案以后,删去Ta后剩下的图是一个或很多个二分图,即没有奇环 则一条边可以成为答案,当且仅当自己在所有奇环的交上且不在偶环上. 考虑建出dfs树,那么返祖边一定在环上. 把边下放到点上,考虑处理出返祖边覆盖的两个端点直接的路径,这些点都在这个环上,按照这个环的奇偶打一个差分上去即可. 但是这样只考虑了只有一个返祖边在环上的情况,返祖边在两个环以上的环我们没有处理 考虑分类讨论 若两个有交返祖边奇偶不同,少处理的一个环是奇环,无论是大奇环还是小奇环都没有影响…
[BZOJ4238]电压 Description 你知道Just Odd Inventions社吗?这个公司的业务是“只不过是奇妙的发明(Just Odd Inventions)”.这里简称为JOI社. JOI社的某个实验室中有着复杂的电路.电路由n个节点和m根细长的电阻组成.节点被标号为1~N 每个节点有一个可设定的状态[高电压]或者[低电压].每个电阻连接两个节点,只有一端是高电压,另一端是低电压的电阻才会有电流流过.两端都是高电压或者低电压的电阻不会有电流流过. 某天,JOI社为了维护电路…
LINK:电压 一张图 每个点可以为黑点或百点 每一条边的两端都必须为一黑一白.询问又多少条边满足除了这条边不满足条件其余所有边都满足条件. 分析一下这个所谓的条件 每一条边的两端必须为一黑一白 所以存在奇环是不被允许的.除此之外的任何条件都是满足的. 至于求答案 可以分析 如果不存在奇环 那么显然偶环上的边 我们也删不掉 所以数量为不是环上的边均可. 考虑存在奇环 那么必然是所有奇环的并集的边的数量. 对于第一种情况 可以求一下边双.对于第二种情况我不太会.. 好吧想的有点复杂了 其实判断环的…
BZOJ_4238_电压_树上差分+dfs树 Description 你知道Just Odd Inventions社吗?这个公司的业务是“只不过是奇妙的发明(Just Odd Inventions)”.这里简称为JOI社. JOI社的某个实验室中有着复杂的电路.电路由n个节点和m根细长的电阻组成.节点被标号为1~N 每个节点有一个可设定的状态[高电压]或者[低电压].每个电阻连接两个节点,只有一端是高电压,另一端是低电压的电阻才会有电流流过.两端都是高电压或者低电压的电阻不会有电流流过. 某天,…
题目传送门 https://lydsy.com/JudgeOnline/problem.php?id=4238 https://loj.ac/problem/2881 题解 如果想要让每一条边都有电流,那么就是说这个图必须是个二分图.换句话说,整张图中必须只有偶环. 图中环的问题考虑 dfs 树. 对于一条非树边,想要让这条边融合以后只有偶环,那么需要整张图中的环只有这条边带来的. 对于一条树边,那么要求就是覆盖这条边的没有偶环,并且所有的奇环都经过这条边. 于是维护一下经过每条边的奇环的数量,…
[题意]给定仙人掌图(每条边至多在一个简单环上),求直径(最长的点对最短路径).n<=50000,m<=10^7. [算法]DFS树处理仙人掌 [题解]参考:仙人掌相关问题的处理方法(未完待续) 对仙人掌建立DFS树,参考无向图的点双连通分量Tarjan算法,在访问x时容易知道边(x,y)是否属于一个环. 设f[x]表示x点向下延伸的最长链长度,对于不在环上的边(x,y),有f[x]=max{f[y]+1}.统计直径可以在访问每个y时进行ans=max{ans,f[x]+f[y]+1}从而完成…
dfs树是解决图中带环的利器. 前天CF的F题就是dfs树,但是当时我没有认真思考 觉着找到一个环过于困难 当时没有想到 也没理解dfs树的意义. 对于一张无向图求出一个dfs树 这个树有两种边 树边和非树边. 其中非树边连接的u v 他们一定具有祖先关系. $注:这是一个很显然 也十分重要的性质. 应用:CF1325F Ehab's Last Theorem 给出一张无向联通图 且不存在重边 自环.定义\(m=\lceil sqrt(n)\rceil\) 求出图中一个环S 满足S是一个简单环…
[BZOJ 2759] 一个动态树好题 题目描述 首先这是个基环树. 然后根节点一定会连出去一条非树边.通过一个环就可以解除根的答案,然后其他节点的答案就可以由根解出来. 因为要修改\(p_i\),所以我们用\(lct\). 还是有点难写的. 代码: #include<bits/stdc++.h> #define ll long long #define N 30005 #define ls ch[v][0] #define rs ch[v][1] using namespace std; i…
4191: 无向图找环 Time Limit: 5 Sec  Memory Limit: 128 MB Submit: 117  Solved: 34 Description 给你一副无向图,每条边有边权,保证图联通,现在让你判断这个图是否有异或值大于零的环存在. Input 多组测试数据,每组先输入两个数n m,表示图的点跟边的数量. 然后是m行,每行三个数a b c.代表一条边的起点,终点,边权. 1 <= n<= 100000, 1 <= m <= 200000. 1 <…