正题

题目链接:https://www.luogu.com.cn/problem/AT3945


题目大意

\(n\)个点\(m\)条边的一张图,对于每条边求它翻转后强连通分量数量是否变化。

\(1\leq n\leq 1000,1\leq m\leq 2\times 10^5\)


解题思路

对于一条\((x,y)\)的边。

  • 如果原来\(y\)能走到\(x\),那么考虑现在是否强连通分量是否减少,就是说如果存在一条\(x->y\)的路径不经过这条边那么不变,否则减少。
  • 如果原来\(y\)不能走到\(x\),那么考虑现在强连通分量是否增加,那么如果存在一条\(x->y\)的路径不经过这条边那么就会产生一个新的强连通分量。

考虑每一个\(x\)能否走到\(y\),这个直接暴力\(O(nm)\)预处理就好了。

然后考虑对于每条边\(x,y\),\(x\)能否不经过这条边走到\(y\),从\(x\)开始\(dfs\),记录出去的第一条边,然后如果到一个点有两种不同情况那么标记即可。

时间复杂度\(O(nm)\)


code

#include<cstdio>
#include<cstring>
#include<algorithm>
#include<vector>
using namespace std;
const int N=1e3+10,M=2e5+10;
int n,m,f[N][N],g[N][N],X[M],Y[M];
vector<int> a[N];
void step(int x,int *v){
if(v[x])return;v[x]=1;
for(int i=0;i<a[x].size();i++)
step(a[x][i],v);
}
void calc(int x,int *v){
if(v[x]==1)return;v[x]=1;
for(int i=0;i<a[x].size();i++)
calc(a[x][i],v);
return;
}
void dfs(int x,int *v,int pos){
if(v[x]>0)return;
else if(v[x]<0){
if((-v[x])==pos)return;
else v[x]=1;
}
else if(!v[x])v[x]=-pos;
for(int i=0;i<a[x].size();i++)
if(v[x]==1)calc(a[x][i],v);
else dfs(a[x][i],v,pos);
return;
}
int main()
{
scanf("%d%d",&n,&m);
for(int i=1;i<=m;i++){
int x,y;
scanf("%d%d",&x,&y);
a[x].push_back(y);X[i]=x;Y[i]=y;
}
for(int i=1;i<=n;i++)step(i,f[i]);
for(int x=1;x<=n;x++){
g[x][x]=1;
for(int i=0;i<a[x].size();i++)
dfs(a[x][i],g[x],i+1);
}
for(int i=1;i<=m;i++){
if(f[Y[i]][X[i]]){
if(g[X[i]][Y[i]]==1)puts("same");
else puts("diff");
}
else{
if(g[X[i]][Y[i]]==1)puts("diff");
else puts("same");
}
}
return 0;
}

AT3945-[ARC092D]Two Faced Edges【dfs】的更多相关文章

  1. AT3945 [ARC092D] Two Faced Edges

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

  2. 【第40套模拟题】【noip2011_mayan】解题报告【map】【数论】【dfs】

    目录:1.潜伏者 [map] 2.Hankson的趣味题[数论]3.mayan游戏[dfs] 题目: 1. 潜伏者(spy.pas/c/cpp)[问题描述]R 国和S 国正陷入战火之中,双方都互派间谍 ...

  3. Kattis - glitchbot 【DFS】

    Kattis - glitchbot [DFS] 题意 有一个机器人 刚开始在(0, 0),然后给出一个目标点,并且会给出一系列指令,但是其中会有一个指令是错误的.我们需要找出那个指令,并且改成正确的 ...

  4. HDU 6113 度度熊的01世界 【DFS】(2017"百度之星"程序设计大赛 - 初赛(A))

    度度熊的01世界 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Su ...

  5. 【dfs】P1331 海战

    题目描述 在峰会期间,武装部队得处于高度戒备.警察将监视每一条大街,军队将保卫建筑物,领空将布满了F-2003飞机.此外,巡洋船只和舰队将被派去保护海岸线.不幸的是因为种种原因,国防海军部仅有很少的几 ...

  6. 【dfs】p1731 生日蛋糕

    1441:[例题2]生日蛋搞 [题目描述] 7月17日是Mr.W的生日,ACM-THU为此要制作一个体积为Nπ的M层生日蛋糕,每层都是一个圆柱体.设从下往上数第i(1≤i≤M)层蛋糕是半径为Ri, 高 ...

  7. 【dfs】LETTERS

    1212:LETTERS [题目描述] 给出一个roe×colroe×col的大写字母矩阵,一开始的位置为左上角,你可以向上下左右四个方向移动,并且不能移向曾经经过的字母.问最多可以经过几个字母. [ ...

  8. 洛谷P1605 迷宫【dfs】

    题目背景 迷宫 [问题描述] 给定一个N*M方格的迷宫,迷宫里有T处障碍,障碍处不可通过.给定起点坐标和 终点坐标,问: 每个方格最多经过1次,有多少种从起点坐标到终点坐标的方案.在迷宫 中移动有上下 ...

  9. 【dfs】BZOJ1703-[Usaco2007 Mar]Ranking the Cows 奶牛排名

    [题目大意] 农夫约翰有N(1≤N≤1000)头奶牛,每一头奶牛都有一个确定的独一无二的正整数产奶率.约翰想要让这些奶牛按产奶率从高到低排序,约翰已经比较了M(1≤M≤10000)对奶牛的产奶率,但他 ...

随机推荐

  1. Azkaban入门(启动一个Simple Example)

    Azkaban简介 azkaban是一个开源的任务调度系统 Azkaban是一套简单的任务调度服务,整体包括三部分webserver.dbserver.executorserver. 开发语言为Jav ...

  2. C#用SOCKET发送HTTP请求小例

    private void button1_Click(object sender, EventArgs e) { string urlStr = this.textUrl.Text ; if (url ...

  3. C# 文件的读取与另存为(WPF)

    刚学习时,随便记录的一个小程序.因为有不少人看(应该都是学生),稍作修改,方便阅读. xaml:样式 <!--绑定事件--> <Window.CommandBindings> ...

  4. 基于mysql和Java Swing的简单课程设计

    摘要 现代化的酒店组织庞大.服务项目多.信息量大.要想提高效率.降低成本.提高服务质量和管理水平,进而促进经济效益,必须利用电脑网络技术处理宾馆酒店经营数据,实现酒店现代化的信息管理.本次课程设计运用 ...

  5. 对于Oracle、mysql和sql server中的部分不同理解

    1.在mysql中事务默认是自动提交的,只有设置autocommit为0的时候,才用自己commit:(提到commit不要忘了rollback哦,回滚)2.但是在oracle中必须自己commit: ...

  6. java 方法参数的执行顺序

    java方法的参数的执行顺序是从左到右还是从右到左呢? 写出一下测试程序: 1 import java.util.*; 2 import java.io.*; 3 public class Test ...

  7. 用vue实现扫描二维码跳转页面功能

    怎么能用vue实现扫描二维码跳转页面功能 1. 安装依赖 npm install vue-qr --save 2. <template>   <div>     <div ...

  8. 恶意软件开发——编写第一个Loader加载器

    一.什么是shellcode loader? 上一篇文章说了,我们说到了什么是shellcode,为了使我们的shellcode加载到内存并执行,我们需要shellcode加载器,也就是我们的shel ...

  9. 3k+2形式的素数相关的两个命题的证明

  10. JavaWeb_MVC 设计模式

    Servlet缺点:(1)用servlet进行显示(out)会很麻烦,因为servlet是一个类,托福ibt并不擅长做显示:(2)servlet直接访问数据表的话,servlet内的访问和操作数据表的 ...