迷宫城堡

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

题目描述:

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

输入:

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

输出:

对于输入的每组数据,如果任意两个房间都是相互连接的,输出"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

code:

这道题可以说是强联通分量的基础题目,使用相关算法
在这里介绍的是tarjan和两遍dfs(不知道这个算法的名字是什么,如果有知道的,麻烦留言,会继续更改)
下面是tarjan

#include<iostream>
#include<stdio.h>
#include<string.h>
#include<stack>
#include<vector>
using namespace std;
int n,m; 
vector<int> feng[10005];
int visit[10005];
int number[10005];
int low[10005];
int flag;
int time;
void tarjan(int start)
{
	if(!flag)return ;
	number[start]=low[start]=++time;
	visit[start]=1;
	for(int i=0;i<feng[start].size();i++)
	{
		int t=feng[start][i];
		if(visit[t]==0)
		{
			tarjan(t);
			low[start]=min(low[start],low[t]);
		}
		else low[start]=min(low[start],number[t]);
	}
	if(low[start]==number[start]&&start!=1)
	{
		flag=0;
	}
}
int main()
{
	while(~scanf("%d%d",&n,&m)&&(m+n))
	{
		for(int i=0;i<m;i++)
		{
			int a,b;
			scanf("%d%d",&a,&b);
			feng[a].push_back(b);
		}
		memset(visit,0,sizeof(visit));
		flag=1;
		time=0;
		tarjan(1);
		if(flag==1&&time==n)
		{
			printf("Yes\n");
		}
		else
		{
			printf("No\n");
		}
		for(int i=0;i<=n;i++)
		{
			feng[i].clear();
		}
	}
	return 0;
} 
 
     

下面这个使用两次dfs缩点,如果可以完全缩成同一点,那么可以互通,反之,则不完全联通

#include<stdio.h>
#include<iostream>
#include<string.h>
#include<vector>
#include<stack>
using namespace std;
int v,m;
const int maxn=10050;
vector<int> g[maxn];//正向联通
vector<int> rg[maxn];//反向联通
vector<int> vs;//第一次dfs的从内而外的顺序
bool used[maxn];
int cmp[maxn];//缩点之后点的编号
void add_edge(int from,int to)
{
	g[from].push_back(to);
	rg[to].push_back(from);
}
void dfs(int v)
{
	used[v]=true;
	for(int i=0;i<g[v].size();i++)
	{
		if(!used[g[v][i]])dfs(g[v][i]);
	}
	vs.push_back(v);
}
void rdfs(int v,int k)
{
	used[v]=true;
	cmp[v]=k;
	for(int i=0;i<rg[v].size();i++)
	{
		if(!used[rg[v][i]])rdfs(rg[v][i],k);
	}
}
int scc()
{
	memset(used,0,sizeof(used));
	vs.clear();
	for(int i=0;i<v;i++)
	{
		if(!used[i])dfs(i);
	}
	memset(used,0,sizeof(used));
	int k=0;
	for(int i=vs.size()-1;i>=0;i--)
	{
		if(!used[vs[i]])rdfs(vs[i],k++);//开始缩点
	}
	return k;
}
int main()
{
	while(~scanf("%d%d",&v,&m))
	{
		if(v==0&&m==0)break;
		int a,b;
		for(int i=0;i<=v;i++)
		{
			g[i].clear();
			rg[i].clear();
		}
		for(int i=0;i<m;i++)
		{
			scanf("%d%d",&a,&b);
			add_edge(a-1,b-1);
		}
		int n=scc();
		if(n==1)printf("Yes\n");
		else printf("No\n");
	} 
	return 0;
}
VS2019+EasyX图形库实战:手把手教你用C语言打造消消乐小游戏(附完整源码) 本文详细介绍了如何使用VS2019和EasyX图形库从零开始构建一个C语言消消乐小游戏。通过环境配置、数据结构设计、界面绘制、交互实现到游戏逻辑完善的完整流程,帮助开发者掌握图形编程和游戏开发的核心技巧,并附有完整源码供参考。 阅读详情

相关推荐

MacBook 上 LaTeX 环境搭建:从 Mactex 到 Sublime Text 与 Skim 的保姆级配置流程

本文详细介绍了在MacBook上搭建LaTeX环境的完整流程,从Mactex安装到Sublime Text与Skim的配置优化。涵盖基础环境准备、编辑器设置、PDF预览同步等关键步骤,帮助用户快速建立高效的LaTeX工作流,特别适合学术写作和技术文档创作。

weixin_30824599的博客 681

HDOJ1269(迷宫城堡)

迷宫城堡 Time Limit: 2000/1000 MS (Java/Others)Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 746Accepted Submission(s): 282 Problem Description 为了训练小希的方向感,Gardon建立了一座大城堡,里...

weixin_30416871的博客 428

macOS 12.7.6部署Ollama+Dify避坑指南

本文介绍了在macOS 12.7.6系统下部署Ollama和Dify的详细步骤及避坑指南。主要内容包括:1)关闭系统完整性保护(SIP)以允许修改系统目录;2)安装特定版本的Docker(2.1.0.5)和docker-compose(v2.38.2)以避免兼容性问题;3)配置Ollama服务并下载nomic-embed-text和deepseek-r1:7b模型;4)针对macOS调整Dify的docker配置文件,包括延长超时时间、修改存储路径、增加资源限制等关键设置。文中提供了完整的命令操作步骤和配置

Hi20240217的博客 3104

迷宫城堡(tarjan算法模板)

所谓的tarjan算法,就是对原图进行dfs遍历(之所以进行dfs是因为图中的每一个强联通分量都是搜索树上的一颗子树,而整个图,就是一个搜索树),每次找到一个新的节点,就进栈,如果这个点有出度,那就接着往下找,直到没有出度为止,然后回溯,回溯到每个点都要和他的邻接点进行low值的比较,谁小就取谁。如果有节点的dfn==low,那这个点就是强联通分量的根节点,然后将这个点以及所有在这个点之后入栈的点...

qwerqwee12的博客 376

用Multisim和74192芯片复刻经典:手把手教你搭建篮球24秒违例计时器(附仿真文件)

本文详细介绍了如何使用Multisim仿真平台和74192芯片构建篮球24秒违例计时器,涵盖时序逻辑电路设计、核心器件选型、仿真环境搭建及调试技巧。通过分步指导,帮助读者掌握数字电路设计的关键技术,并附赠仿真文件供实践参考。

weixin_27014595的博客 279

快速了解Spyder

一 面板介绍菜单栏:放置所有功能工具栏:放置快捷菜单,可以通过菜单栏中的View的Toolbars的复选框来勾选工作区:写代码的地方属性页的标题栏:可以显示当前代码的名字和位置查看栏:查看文件、调试时的对象及变量输出栏:查看程序的输出信息,也可以作为shell终端来输入Python语句状态栏:用来显示当前文件权限、编码,光标指向位置和系统内存二 注释功能注释功能为编写代码很常用功能,下面介绍Spy...

实践求真知 1万+

【HDU 1269】迷宫城堡

【HDU 1269】迷宫城堡 强联通模板

ACMer' 1442

ROS应用之如何配置RTOS满足机器人系统中的实时要求

实时操作系统(RTOS)基本概念实时操作系统(RTOS)是设计用于实时应用的操作系统,其主要目标是在确定的时间内完成任务。RTOS的任务调度算法和优先级控制机制能够确保高优先级任务按时完成。精确的传感器数据采集:传感器数据需要在规定时间内采集并传输给控制系统。快速响应外部事件:对于控制系统,需要确保指令在最短的时间内得到响应。任务的调度周期:任务的周期可以通过公式计算,其中 ftask 是任务的调度频率。优先级分配。

weixin_68094467的博客 1008

HDOJ 1269 迷宫城堡

tarjan。。。。。 迷宫城堡 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 5854    Accepted Submission(s): 2572 Problem Description 为了训练

码代码的猿猿 1982

uniapp原生安卓插件开发之路

声明: 我的功能需求:全局悬浮框,也就是在其他应用上依旧能悬浮。查遍uni文档,无法实现,甚至native.js也无法实现,无奈只能走上原生插件开发这条不归路了。(吐槽:天天写前端js,突然写了下android简直要炸,public static String啥的,var不香嘛,不过别人严谨肯定还是有别人道理的,加油吧,争取能入个门!) 本人不懂安卓开发,完全安卓小白,所以安卓方面可能表达的不是很好,安卓代码可能写的不优美,但我功能最终还是实现了。但是为了需求,能力总能被“逼”出来。有描述错误的还望指正

Jone's Area 1万+

Navicat16/17数据库密码安全解析与实战解密指南

本文详细解析了Navicat 16/17版本中数据库密码的加密机制,并提供了实用的密码找回指南。通过导出连接文件获取加密密文,利用基于AES-128-CBC算法的本地HTML工具,可安全、离线地解密遗忘的密码。文章强调该方法仅适用于合法恢复自有密码,并给出了操作步骤与安全建议。

weixin_28835583的博客 467

hdoj1269迷宫城堡【scc】

迷宫城堡 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 10630    Accepted Submission(s): 4767 Problem Description 为了训练小希的方向感,Gardon建立了

走一步再走一步 657

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

杭电oj1269 迷宫城堡

迷宫城堡 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 4988    Accepted Submission(s): 2193 Problem Description 为了训练小希的方向感,Gardon建立了一座大

u011485376的专栏 1009

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

HDU 1269 迷宫城堡

迷宫城堡 Time Limit: 2000/1000 MS (Java/Others)Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 17371Accepted Submission(s): 7615 Problem Description 为了训练小希的方向感,Gardon建立了一座大城堡...

HJ921004的博客 75

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

HDU1269 迷宫城堡

HDU1269 迷宫城堡 题目大意 给定 有向图 中的 n 个点, m 条边, 求图的 强连同分量 是否为 1. 题目思路 一道裸的 tarjan 题, 需要注意的是边的存储, LOW的含义. 代码 #include <cstdio> #include <cstring> #include <stack> #include <cmath> ...

afnt38230的博客 205

HDU -1269 迷宫城堡(Tarjan)

迷宫城堡 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Problem Description 为了训练小希的方向感,Gardon建立了一座大城堡,里面有N个房间(N<=10000)和M条通道(M<=100000),每个通道都是单向的,就是说若称某通道连通了...

名字太长容易被发现并打死 269

迷宫城堡 HDU - 1269 初学tarjan

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

yhb的博客 235

HDU 1269 迷宫城堡(DFS)

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

aadu4709的博客 187

hdu 1269 迷宫城堡

题目连接 http://acm.hdu.edu.cn/showproblem.php?pid=1269 迷宫城堡 Description 为了训练小希的方向感,Gardon建立了一座大城堡,里面有N个房间(N<=10000)和M条通道(M<=100000),每个通道都是单向的,就是说若称某通道连通了A房间和B房间,只说明可以通过这个通道由A房间到达B房间,但并不说...

dong12276的博客 127

HDU1269 迷宫城堡(模板题)

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

qq_35975367的博客 429
上一篇: Hawk-and-Chicken详解
下一篇: Popular Cows
大橘为重eleven
博客等级 码龄8年 35粉丝 103原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值