随笔分类 - TARJAN 强连通分量
摘要:A(暴力) 暴力枚举所有可能的等式,按照要求check #include<bits/stdc++.h> #define rep(i,s,t) for(int i=(s),i##end=(t);i<=i##end;i++) #define dwn(i,s,t) for(int i=(s),i##end
阅读全文
摘要:bzoj 1997 Planar 题目大意: 给一个存在曼哈顿回路的无向图,求该图是否为平面图 思路: 先把曼哈顿回路提出来,则剩下的边的两个端点若有$ABAB$的形式则这两条边必定一个在环外一个在环内 对于这些边$2-SAT$即可 1 #include<iostream> 2 #include<c
阅读全文
摘要:2-SAT就是给出$m$个限制表示$x==val_x || y==val_y$ 求出满足的解 每个点拆成两个点,如果$x$不满足则$y$一定满足,$y$不满足同理。这样我们连边,然后$tarjan$即可 1 #include<iostream> 2 #include<cstdio> 3 #inclu
阅读全文
摘要:题目大意: 直线上有n个炸弹有坐标x和半径r 当一个炸弹被引爆时 若有炸弹的坐标在该炸弹坐标+-r范围内则另一个炸弹也被引爆 求先引爆每一个炸弹最终会引爆多少炸弹 思路: 可以想到n平方连边然后tarjan缩点跑拓扑 可以通过线段树来优化建图 对每个点向它能直接引爆的左右范围连边 即用线段树中的线段
阅读全文
摘要:T1 受欢迎的牛 bzoj 1051 题解链接 T2 最大半连通子图 bzoj 1093 题目大意: 一个半连通的图定义为对任意点对u v 存在路径u->v或v->u 求给定图的最大半连通子图 思路: 可以知道 半连通子图一定为强连通分量缩点之后的链 所以只需要求一个最长链然后记一下方案数 需要注意
阅读全文
摘要:题目大意: 一个有向图,有些点可以作为终点,每个点有权值,每个点和边可以走很多遍,点走过之后再走点权不会计入分数 从一个点开始,求一个路径使这条路径的分数最大且终点是给定的点之一 输出这个路径长度 思路: 首先tarjan缩点 然后在新图上用spfa跑最长路(开始非常naive以为用dfs就可以 1
阅读全文
摘要:题目大意: 现在有N头牛,给一个 A B 表示牛A认为牛B受欢迎 这种关系是具有传递性的,如果A认为B受欢迎,B认为C受欢迎,那么牛A也认为牛C受欢迎。你的任务是求出有多少牛被所有的牛认为是受欢迎的 思路: 先用tarjan把每个强连通分量缩点 然后脑补一下 可以发现如果有大于一个连通分量出度为零,
阅读全文
摘要:题目大意: 给一个有向图 求一个最大的强连通分量,输出这个强连通分量里的所有元素 若两个联通分量内点数相同 则输出字典序小的那个 思路: 直接tarjan 对每个连通分量,求一下最小点,然后判断字典序就行了 1 #include<iostream> 2 #include<cstdio> 3 #inc
阅读全文
摘要:题目大意: 有一个r*c的矩阵,上面有n个点有宝藏 每个有宝藏的点上都有传送门 传送门有三种:第一种可以传到该行任意一个有宝藏的点,第二种可以传到该列任意一个有宝藏的点,第三种可以传到周围的八连块上有宝藏的点 现在你可以在任意一个有宝藏的点开始,求你最多可以经过多少个不同的藏宝点 每个藏宝点可以多次
阅读全文

浙公网安备 33010602011771号