随笔分类 -  A - 图论

摘要:1005钥匙迷宫 bfs 观察到钥匙和锁是单向边,合法连通块最多只有一个。想到了下面两个做法: 因为是单向边,所以就有上下级关系,而且必然最终是树或者森林。想到并查集直接维护,看最后是森林还是树,如果是树的话就有答案。 后来队友启发又想到,因为是单向边所以一条边可以删除一个子树,这样最后能删到只剩一 阅读全文
posted @ 2025-08-05 10:56 lyrrr 阅读(22) 评论(0) 推荐(0)
摘要:https://codeforces.com/contest/2110/problem/E 阅读全文
posted @ 2025-05-28 22:49 lyrrr 阅读(12) 评论(0) 推荐(0)
摘要:割点+计数的一个题(https://www.luogu.com.cn/problem/P3469) 如果想要重新建图在新图上计数的话大概需要一个圆方树,因为一个割点会属于多个点双,写起来也很麻烦。 所以可以在tarjan过程中直接找到子树内的连通块来计数就会比较简单。 题外话: 割点比较神奇的一件事 阅读全文
posted @ 2025-05-15 19:43 lyrrr 阅读(8) 评论(0) 推荐(0)
摘要:首先定义一个有向图的割{S,T}的大小为S连向T的边数。 那么使s在S中,t在T中,如果存在一个割大小为0,就说明不存在任何s到达t的路径。 也就是说,割的大小是s->t路径(不经过相同边,并且以下路径指的都是不经过相同边)数目的上界,记为r。 如果我们不断寻找从s->t的路径,已经找到的路径是l, 阅读全文
posted @ 2025-05-13 15:12 lyrrr 阅读(35) 评论(0) 推荐(0)
摘要:https://codeforces.com/contest/1770/problem/C C: 最不会的数论。 感觉不知道怎么能做出来,可能就是多观察样例,从答案出发思考吧。 假设给定x,那么要求就是两个数必须gcd为1,也就是说每两个数都没有相同的质因子 那么我们考虑是否有一种情况,对于任意x, 阅读全文
posted @ 2024-12-22 00:36 lyrrr 阅读(14) 评论(0) 推荐(0)
摘要:EK 算法复杂度\(O(n\times m)\) 其中每次bfs复杂度为\(O(m)\) 后面的复杂度算法oiwiki写的很清楚了 #include <bits/stdc++.h> using namespace std; #define int long long #define ll long 阅读全文
posted @ 2024-10-30 19:46 lyrrr 阅读(19) 评论(0) 推荐(0)
摘要:spfa struct Node{ int w,to,nxt; }edg[maxn]; int head[maxn],tot; void add_edge(int u,int w,int v){ edg[++tot].nxt=head[u];edg[tot].to=v; edg[tot].w=w;h 阅读全文
posted @ 2024-09-11 18:28 lyrrr 阅读(10) 评论(0) 推荐(1)