迷宫城堡 强连通

Problem Description
为了训练小希的方向感,Gardon建立了一座大城堡,里面有N个房间(N<=10000)和M条通道(M<=100000),每个通道都是单向的,就是说若称某通道连通了A房间和B房间,只说明可以通过这个通道由A房间到达B房间,但并不说明通过它可以由B房间到达A房间。Gardon需要请你写个程序确认一下是否任意两个房间都是相互连通的,即:对于任意的i和j,至少存在一条路径可以从房间i到房间j,也存在一条路径可以从房间j到房间i。

 

Input
输入包含多组数据,输入的第一行有两个数:N和M,接下来的M行每行有两个数a和b,表示了一条通道可以从A房间来到B房间。文件最后以两个0结束。

 

Output
对于输入的每组数据,如果任意两个房间都是相互连接的,输出"Yes",否则输出"No"。

 

Sample Input
3 3 1 2 2 3 3 1 3 3 1 2 2 3 3 2 0 0

 

Sample Output
Yes No

 

判断强连通分量是否为1即可
#include<bits/stdc++.h>
using namespace std;
//input by bxd
#define rep(i,a,b) for(int i=(a);i<=(b);i++)
#define repp(i,a,b) for(int i=(a);i>=(b);--i)
#define RI(n) scanf("%d",&(n))
#define RII(n,m) scanf("%d%d",&n,&m)
#define RIII(n,m,k) scanf("%d%d%d",&n,&m,&k)
#define RS(s) scanf("%s",s);
#define ll long long
#define pb push_back
#define REP(i,N)  for(int i=0;i<(N);i++)
#define CLR(A,v)  memset(A,v,sizeof A)
//
#define inf 0x3f3f3f3f
const int N=100000+5;
int head[N];
int pos;
struct Edge
{int to,nex;
}edge[N];
void add(int a,int b)
{edge[++pos].nex=head[a];head[a]=pos;edge[pos].to=b;
}
int dfn[N],low[N],Stack[N],vis[N];
int tot=0,index=0;
int cnt=0;
void tarjan(int x)
{dfn[x]=low[x]=++tot;Stack[++index]=x;vis[x]=1;for(int i=head[x];i;i=edge[i].nex){if(!dfn[edge[i].to]){tarjan(edge[i].to);low[x]=min(low[x],low[edge[i].to]);}else if(vis[edge[i].to])low[x]=min(low[x],dfn[edge[i].to]);}if(low[x]==dfn[x]){cnt++;do{vis[ Stack[index] ]=0;index--;}while(x!=Stack[index+1]);}
}
int main()
{int n,m;while(~RII(n,m),n||m){CLR(head,0);CLR(dfn,0);CLR(low,0);pos=tot=index=0;rep(i,1,m){int a,b;RII(a,b);add(a,b);}cnt=0;rep(i,1,n)if(!dfn[i])tarjan(i);printf("%s\n",cnt==1?"Yes":"No");}return 0;
}
View Code

 

转载于:https://www.cnblogs.com/bxd123/p/10795754.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/483526.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【计算机网络复习 数据链路层】3.3.1 差错控制(检错编码)

差错控制&#xff08;检错编码&#xff09;一、差错从何而来&#xff1f;二、数据链路层的差错控制2.1 奇偶校验码2.2 CRC循环冗余码一、差错从何而来&#xff1f; 概括来说&#xff0c;传输中的差错都是由于噪声引起的。 全局性&#xff1a;由于线路本身电气特性所产生的随机…

linux基础知识——wait函数和waitpid函数回收子进程

1.wait函数回收子进程 \qquad父进程可以调用wait()函数回收子进程的终止信息。wait函数有三个功能&#xff1a; \qquad阻塞等待子进程退出 \qquad回收子进程残留资源 \qquad获取子进程结束状态&#xff08;退出原因&#xff09; #include<stdio.h> #include<unistd.h…

从“元宇宙”热炒中理性看待我国虚拟现实产业发展

来源&#xff1a;工信头条作者&#xff1a;袁钰&#xff08;赛迪顾问、电子信息产业研究中心、分析师&#xff09;2021年4月以来&#xff0c;元宇宙概念大热&#xff0c;国内外巨头企业围绕“元宇宙”加快布局&#xff0c;作为元宇宙核心技术之一的虚拟现实也被寄予厚望。经数据…

2018-2019-2 网络对抗技术 20165332 Exp6 信息搜集与漏洞扫描

2018-2019-2 网络对抗技术 20165332 Exp6 信息搜集与漏洞扫描 基础问题回答 基础问题回答 &#xff08;1&#xff09;哪些组织负责DNS&#xff0c;IP的管理。 答&#xff1a;目前全球有5个地区性注册机构&#xff1a; ARIN主要负责北美地区业务 RIPE主要负责欧洲地区业务 APNIC…

【计算机网络复习 数据链路层】3.3.2 差错控制(纠错编码)

差错控制&#xff08;纠错编码&#xff09;一、海明码1.1 确定校验码位数r1.2 确定校验码和数据的位置1.3 求出校验码的值1.4 检错并纠错一、海明码 **海明码&#xff1a;**发现双比特错&#xff0c;纠正单比特错。 1.1 确定校验码位数r 海明不等式&#xff1a; r 为冗余信…

Nature封面重磅!剑桥大学团队揭开老年痴呆背后的罪魁祸首

来源&#xff1a;naturetau蛋白异常是老年痴呆症的重要病因。英国剑桥大学Sjors H. W. Scheres、Michel Goedert等研究人员在Nature上发文&#xff0c;基于不同的蛋白折叠结构对「tau蛋白病」进行分类&#xff0c;荣登Nature封面。听说过阿尔茨海默病吗&#xff1f;没有。老年痴…

linux基础知识——IPC之管道

1.IPC \qquadlinux环境下&#xff0c;进程的地址空间相互独立&#xff0c;每个进程都有各自不同的用户地址空间。任何一个进程的全局变量在另外一个进程中都看不到&#xff0c;所以进程之间不能直接互相访问&#xff0c;进程间要想交换数据只能通过内核&#xff0c;在内核中开辟…

速度比晶体管快1000倍,新型单光子开关登上Nature

来源&#xff1a;机器之心作者&#xff1a;CHARLES Q. CHOI一种新型光学开关每秒钟的运行次数达到 1 万亿次&#xff0c;要比现在商用的顶级硅芯片快100到1000倍&#xff0c;这项研究未来或许可以催生出基于光而不是电的新一代计算机。在如今人们应用最为广泛的计算机架构中&am…

【计算机网络复习 数据链路层】3.4.1 流量控制与可靠传输机制

流量控制与可靠传输机制一、数据链路层的流量控制二、流量控制的方法三、可靠传输、滑动窗口、流量控制一、数据链路层的流量控制 较高的发送速度和较低的接收能力不匹配&#xff0c;会造成传输出错&#xff0c;因此流量控制也是数据链路层的一项重要工作。 数据链路层的流量…

linux的驱动开发——简单驱动程序编写

1.字符设备驱动介绍 \qquad字符设备驱动是linux驱动中&#xff0c;最基本的一类设备驱动&#xff0c;字符设备就是按照一个字节一个字节的方式进行读写操作的设备。读写数据分先后顺序&#xff0c;我们常见的单片机外设&#xff0c;比如led灯、按键、I2C、SPI、LCD等等都属于字…

【计算机网络复习 数据链路层】3.4.2 停止-等待协议

停止-等待协议一、停等协议1.1 无差错情况1.2 有差错控制1.4 停等协议性能分析一、停等协议 1、为什么要有停止-等待协议&#xff1f; 除了比特出差错&#xff0c;底层信道还会出现丢包问题。 丢包&#xff1a; 物理线路故障、设备故障、病毒攻击、路由信息错误等原因&#…

6G目前进展与未来展望

来源&#xff1a;6G俱乐部摘要&#xff1a;随着5G的大规模商用&#xff0c;6G研究也成为了移动通信行业新的研究热点。全球通信发达的国家和地区纷纷出台6G研发规划。面向2030年&#xff0c;如何定义6G&#xff0c;如何支撑6G突破现有技术的束缚&#xff0c;构建全新的能力体系…

一起玩儿物联网人工智能小车(ESP32)——14. 用ESP32的GPIO控制智能小车运动起来(二)

摘要&#xff1a;本文主要讲解如何使用Mixly实现对单一车轮的运动控制。 下面就该用程序控制我们的小车轮子转起来了。打开Mixly软件&#xff0c;然后单击顶部“文件”菜单中的“新建”功能&#xff0c;我们来开启一个新程序的开发工作。 我们的工作同样是先从最简单的开始&am…

linux系统常用命令详解

Linux命令格式&#xff1a;命令选项参数 &#xff08;大部分命令是这个格式&#xff09; 注意&#xff1a; 1.命令区分大小写 2.短选项可以合并 长选项不能合并 如 &#xff1a; 短选项 -l -h 可以合并为 -lh 长选项 不能合并 1. ls :列出文件信息&#xff0c;默认为当前目录下…

linux的驱动开发——内核模块的编译

1.编译内核模块的编译器 \qquad编译器&#xff1a;gcc 交叉编译器 2.编写编译内核模块的Makefile \qquad内部编译&#xff1a;内核模块的源文件放在内核源码中进行编译&#xff0c;需要修改内核中的kconfig&#xff0c;Makefile&#xff0c;make menuconfig \qquad静态编译&am…

【计算机网络复习 数据链路层】3.4.3 后退N帧协议(GBN)

后退N帧协议&#xff08;GBN&#xff09;一、后退N帧协议中的滑动窗口二、GBN发送方必须响应的三件事三、GBN接收方要做的事四、滑动窗口长度一、后退N帧协议中的滑动窗口 发送窗口&#xff1a;发送方维持一组连续的允许发送的帧的序号。 接收窗口&#xff1a;接收方维持一组连…

AI+Science 是人类两大科研范式的结合,工程化正当时

来源&#xff1a;ScienceAI编辑&#xff1a;ScienceAI近年来&#xff0c;人工智能&#xff08;AI&#xff09;快速发展&#xff0c;与此同时&#xff0c;越来越多的自然科学研究开始利用 AI 解决领域问题&#xff0c;比如助力药物研发、癌症疗法、材料发现&#xff0c;以及科研…

Docker 是一个开源的应用容器引擎

Docker 是一个开源的应用容器引擎&#xff0c;让开发者可以打包他们的应用以及依赖包到一个可移植的容器中&#xff0c;然后发布到任何流行的 Linux 机器上&#xff0c;也可以实现虚拟化。容器是完全使用沙箱机制&#xff0c;相互之间不会有任何接口。 Docker中包括三个基本概念…

linux的驱动开发——内核模块如何使用?

1.内核模块的使用 \qquad查看内核模块的信息的命令&#xff1a; modinfo xxx.ko\qquad查看当前内核中已经插入的内核模块 lsmod\qquad将内核模块加载到内核中&#xff0c;和内核形成一个整体&#xff0c;运行 sudo insmod xxx.ko //加载函数会被调用\qquad查看内核日志信…

【计算机网络复习 数据链路层】3.4.4 选择重传协议(SR)

选择重传协议&#xff08;SR&#xff09;一、选择重传协议中的滑动窗口二、SR发送方必须响应的三件事三、SR接收方要做的事四、滑动窗口长度五、总结一、选择重传协议中的滑动窗口 二、SR发送方必须响应的三件事 1、上层的调用 从上层收到数据后&#xff0c;SR发送方检查下一…