题意:给定一个有向图,保证无重边自环,求将图中的每条边反向后强联通分量的个数是否会改变。

数据范围:$n$ $≤$ $1e3$,$m$ $≤$ $2e5$。


首先考虑一条边的影响。

因为一条边只能连接两个点,因此将一条边反向至多只能影响它两个端点在强联通分量里的变化,即整体增加一个强联通分量,或整体减少一个强联通分量(或整体不变)。

再考虑将这条边反向之前,两端点 $u$,$v$ 之间的联通情况。

假设这条边为 $u$ $→$ $v$,那么将这条边反向,在图中就可以看作增加一条 $v$ $→$ $u$ 的边,删掉一条 $u$ $→$ $v$ 的边。

那么在删边和添边之前,考虑 $4$ 种情况。

  1. 存在一条 $u$ $→$ $v$ 的路径,且其中不包含 $u$ $→$ $v$ 这条边;存在一条 $v$ $→$ $u$ 的路径;
  2. 存在一条 $u$ $→$ $v$ 的路径,且其中不包含 $u \to v$ 这条边;不存在一条 $v$ $→$ $u$ 的路径;
  3. 不存在不经过 $u$ $→$ $v$ 这条边的一条 $u$ $→$ $v$ 的路径 ;存在一条 $v$ $→$ $u$ 的路径;
  4. 不存在不经过 $u$ $→$ $v$ 这条边的一条 $u$ $→$ $v$ 的路径 ;不存在一条 $v$ $→$ $u$ 的路径;

稍加分析就能得出在整体增加一个强联通分量的时候,是情况 $2$;在整体减少一个强联通分量的时候,是情况 $3$。

原图中是否存在一条 $v \to u$ 的路径只需在原图中爆搜一遍即可。

考虑如何判断是否存在不经过 $u$ $→$ $v$ 这条边的一条 $u$ $→$ $v$ 的路径。

显然一个最暴力的思路就是枚举每条边,打个 $\text{tag}$ 后在图中爆搜,复杂度 $O(m^2)$。

这里复杂度爆炸的原因就是每条边的枚举,因为在图中爆搜是无法避免的,因此把枚举每条边改为枚举每个点 $a$ 试试。

$a$ 不走 $a \to b$ 这条边想要到达 $b$,只需要在不走环的情况下第一条边不走 $a \to b$ 这条边就行了,而若 $a$ 不走 $a \to b$ 这条边,那么相当于 $a$ 可以走除了 $b$ 以外的后继节点。

考虑将问题转化为 $a$ 的后继节点能够被 $a$ 的其他后继节点到达(在不在 $a$ 处走环的情况下,这个可以通过给 $a$ 打个标记等等办法特判)。

当然这个还是需要枚举 $a$ 的出边因此复杂度没有任何改进,进而考虑再将问题转化为 $a$ 的后继节点能够两两到达。

但是这个转化是不对等的,因为后者是前者的充分不必要条件,其实每个点只需要被另 $1$ 个点到达就行了。

这就转换为了一个点集中的点能否被其中的另一个点到达的问题,因此考虑用多源 $\text{bfs}$ 实现,但是因为环的缘故,每个点有可能自己到达自己,因此在被访问的时候要记录一下访问它的点集中的点是谁(这里需要记录两个),同时每个点可以两次入队。

不过由于本人常数过大的缘故,需要使用 $\text{bitset}$ 优化。

code:Submission #34083578 - AtCoder Regular Contest 092

AT ARC092F Two Faced Edges的更多相关文章

  1. @atcoder - ARC092F@ Two Faced Edges

    目录 @description@ @solution@ @accepted code@ @details@ @description@ 给出一个有向图,对每条边都做一次询问: 翻转这条边后,对原图的强 ...

  2. AT3945-[ARC092D]Two Faced Edges【dfs】

    正题 题目链接:https://www.luogu.com.cn/problem/AT3945 题目大意 \(n\)个点\(m\)条边的一张图,对于每条边求它翻转后强连通分量数量是否变化. \(1\l ...

  3. AT3945 [ARC092D] Two Faced Edges

    要求,翻转一条边,强连通分量个数是否会改变. 考虑连通分量个数会改变的因素: 即\(v\to u\)是否成立,以及翻转前,是否有一条\(u \to v\)的路径不经过该条边 以上当只有一个满足时,连通 ...

  4. Atcoder Regular Contest 092 D - Two Faced Edges(图论+bitset 优化)

    Atcoder 题面传送门 & 洛谷题面传送门 orz ymx,ymx ddw %%% 首先既然题目要我们判断强连通分量个数是否改变,我们首先就将原图 SCC 缩个点呗,缩完点后我们很自然地将 ...

  5. Atcoder 乱做

    最近感觉自己思维僵化,啥都不会做了-- ARC103 F Distance Sums 题意 给定第 \(i\) 个点到所有点的距离和 \(D_i\) ,要求构造一棵合法的树.满足第 \(i\) 个点到 ...

  6. 【AtCoder】ARC092

    C - 2D Plane 2N Points 把能连边的点找到然后跑二分图匹配即可 #include <bits/stdc++.h> #define fi first #define se ...

  7. AtCoder Regular Contest 092

    AtCoder Regular Contest 092 C - 2D Plane 2N Points 题意: 二维平面上给了\(2N\)个点,其中\(N\)个是\(A\)类点,\(N\)个是\(B\) ...

  8. AtCoder Regular Contest 092 C D E F

    C - 2D Plane 2N Points 题意 二维平面上有\(N\)个红点,\(N\)个蓝点,一个红点和一个蓝点能配成一对当且仅当\(x_r<x_b\)且\(y_r<y_b\). 问 ...

  9. He faced a maximum sentence of three years.

    Police raided his home in August and found more than 100g of marijuana. He faced a maximum sentence ...

  10. Effective Java Item2:Consider a builder when faced with many constructor parameters

    Item2:Consider a builder when faced with many constructor parameters 当构造方法有多个参数时,可以考虑使用builder方式进行处理 ...

随机推荐

  1. Oracle View的 WITH READ ONLY 參數有什麼用途?

    限制此視圖只能select,不能進行DML(update,delete,insert)操作,可以保護源表的數據不被改動. CREATE VIEW XXXXX_V AS select XXX,XXX1, ...

  2. js过滤掉指定html标签

    替换标签 var str = "<p><span style='color:#ccc;'>这是测试标签</span><span>这是测试htm ...

  3. (K8s学习笔记八)Pod的扩缩容

    1.手动扩容机制 示例:对busybox-deployment手动扩缩容 apiVersion:apps/v1 kind: Deployment metadata: name: busybox-dep ...

  4. 选择/插入/冒泡/快速排序之R语言实现

    题目来自于<R语言的科学编程与仿真>第9章第7题. 选择排序法.这是一种最简单,但是效率最低的排序算法.算法步骤如下: 对于给定的一个向量x,令最初的未排序向量u等于x,并且最初的已排序向 ...

  5. C语言学习--常量指针与指针常量

    指针常量 #include<stdio.h> #include<string.h> //常量指针:是一个指针, 定义不用初始化, 能改变指向,但是指向的内容不能被修改 cons ...

  6. APP的文件数据直传腾讯云COS实践

    简介 本文主要介绍基于腾讯云对象存储COS,如何快速实现一个app的文件直传功能.您的服务器上只需要生成和管理访问密钥,无需关心细节,文件数据都存放在腾讯云 COS 上. 架构说明 对于app应用,把 ...

  7. /etc/login.defs 创建用户的默认设置文件

    /etc/login.defs 文件用于在创建用户时,对用户的一些基本属性做默认设置,例如指定用户 UID 和 GID 的范围,用户的过期时间,密码的最大长度,等等.需要注意的是,该文件的用户默认配置 ...

  8. 学生网络创业交流会-2021年office

    1.课程的讲解之前,先来对题目进行分析,首先需要在考生文件夹下,将Wrod素材.docx文件另存为Word.docx,后续操作均基于此文件,否则不得分. 2.这一步非常的简单,打开下载素材文件,在[文 ...

  9. S-HR查询用户组织范围

    SELECT org.FNumber FNumber,org.FName_L2 orgName FROM T_PM_OrgRange orgRange LEFT JOIN T_ORG_admin or ...

  10. vue 页面嵌入pdf文件

    1.pdf分页显示 2.没有分页