HDU1269 迷宫城堡(模板题)

HDU1269 迷宫城堡

文章目录

    • Problem Description
    • 题解:

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

题解:

问这个图是不是只有一个强连通图。
tarjan求强连通分量的模板题
建议背诵
tarjan不清楚的可以看我另一个博客详细的讲解
链式前项星版

#include<cstdio>
#include<stack>
#include<algorithm>
#include<cstring>
#include<iostream>
using namespace std;
const int MAXN = 10000 + 5;
const int MAXM = 100000 + 5;
int n,m;
int top,tot,cnt;
int head[MAXN];
bool vis[MAXN];
int dfn[MAXN],low[MAXN];
void init()
{top=tot = cnt = 0;memset(head,-1,sizeof head);memset(vis,0,sizeof vis);for(int i = 1; i<=n; i++) dfn[i] = low[i] = 0;
}
struct Edge {int to,ne;
}e[MAXM]; 
void add(int u,int v) {e[++top].to = v;e[top].ne = head[u];head[u] = top;
}
void tarjan(int x) {low[x] = dfn[x] = ++tot;vis[x] = 1;for(int i = head[x]; i!=-1; i=e[i].ne) {int v = e[i].to;if(dfn[v] == 0) {tarjan(v);low[x] = min(low[x],low[v]);}else if(vis[v] == 1) {low[x] = min(low[x],dfn[v]);}}if(low[x] == dfn[x]) cnt++;}
int main()
{int a,b;while(~scanf("%d%d",&n,&m)) {if(n == 0 && m == 0) break;for(int i = 1; i<=m; i++) {scanf("%d%d",&a,&b);add(a,b);}for(int i = 1; i<=n; i++) {if(dfn[i] == 0) tarjan(i);}if(cnt == 1) puts("Yes");else puts("No");}return 0 ;
}

二维矩阵版

#include<bits/stdc++.h>
#define mem(a) memset(a,0,sizeof(a))
using namespace std;
int n,m;
const int maxn=100004;
int low[maxn],dfn[maxn];
int vis[maxn];
vector<int>mp[maxn];
int cnt=0;
int sign;
void init()
{mem(low);mem(dfn);mem(vis);mem(mp);cnt=0;sign=0;}
void Tarjan(int u)
{vis[u]=1;low[u]=dfn[u]=++cnt;for(int i=0;i<mp[u].size();i++){int v=mp[u][i];if(dfn[v]==0){Tarjan(v);low[u]=min(low[u],low[v]);}else if(vis[v]==1)low[u]=min(low[u],dfn[v]);}if(dfn[u]==low[u])sign++;
}
int main()
{while(cin>>n>>m){if(n==0&&m==0)break;init();for(int i=1;i<=m;i++){	int x,y;cin>>x>>y;mp[x].push_back(y);}for(int i=1;i<=n;i++){if(dfn[i]==0)Tarjan(i);}if(sign!=1)cout<<"No"<<endl;else cout<<"Yes"<<endl;}return 0;
}

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

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

相关文章

照看小猫(nowcoder 217602)

照看小猫 nowcoder 217602 题目大意 有n只小猫&#xff0c;对于第i只小猫&#xff0c;给它取一个以小写字母组成的名字&#xff08;长度不大于aia_iai​&#xff09;&#xff0c;问你使所有小猫名字不同的方案数 样例#1 输入样例#1 1 1输出样例#1 26样例解释#1 猫咪的名…

AT3955-[AGC023D]Go Home【结论,递归】

正题 题目链接:https://www.luogu.com.cn/problem/AT3955 题目大意 nnn个房子在一个坐标轴上&#xff0c;第iii个有pip_ipi​个人在位置xix_ixi​&#xff0c;开始所有人都在一辆在位置sss的车上&#xff0c;每一时刻&#xff0c;每个人都会投票决定车的走向&#xff0c;票多的…

[XSY3383]多线程(笛卡尔树,DP)

%%%tjytjytjy的笛卡尔树做法&#xff1a; 设dp(l,r,Amin,Bmin)dp(l,r,Amin,Bmin)dp(l,r,Amin,Bmin)为把c[l],c[l1],...,c[r]c[l],c[l1],...,c[r]c[l],c[l1],...,c[r]划到A,BA,BA,B两线程中&#xff0c;且划到AAA线程的数>Amin>Amin>Amin&#xff0c;划到BBB线程的数&…

ASP.NET Core 2.0使用Autofac实现IOC依赖注入竟然能如此的优雅简便

初识ASP.NET Core的小伙伴一定会发现&#xff0c;其几乎所有的项目依赖都是通过依赖注入方式进行链式串通的。这是因为其使用了依赖注入 (DI) 的软件设计模式&#xff0c;代码的设计是遵循着“高内聚、低耦合”的原则&#xff0c;使得各个类与类之间的关系依赖于接口&#xff0…

POJ1236 Network of Schools

POJ1236 Network of Schools 文章目录Description题意&#xff1a;题解&#xff1a;代码&#xff1a;Description A number of schools are connected to a computer network. Agreements have been developed among those schools: each school maintains a list of schools t…

【模拟】签订协议(nowcoder 217601)

签订协议 nowcoder 217601 题目大意 给出n个数&#xff0c;现在有一个协议书&#xff0c;让你从1传到n&#xff0c;然后传回1&#xff0c;继续传下去 对于第i个数&#xff0c;如果前面i-1个数已经匹配过了&#xff0c;那么当协议书传过来时即可匹配&#xff0c;否则无法匹配…

P4196-[CQOI2006]凸多边形/[模板]半平面交【计算几何】

正题 题目链接:https://www.luogu.com.cn/problem/P4196 题目大意 给出nnn个凸多边形&#xff0c;求它们交的面积。 解题思路 就是把凸多边形上每条边作为一个半平面限制然后求一遍半平面交就好了。 具体做法是我们先将点按照级角排序&#xff0c;然后以此把半平面加入双端…

连续段问题小结

一个好用的工具——析合树 oi-wiki 例题 CF526F 题意&#xff1a; 给出一个1~nnn的排列&#xff0c;问有多少个区间的值域是连续的。 题解&#xff1a; 线段树单调栈做法 分治做法 析合树做法 图论做法 CF997E 题意&#xff1a; 给出一个1~nnn的排列&#xff0c;有qqq次…

实战中的asp.net core结合Consul集群Docker实现服务治理

一、前言在写这篇文章之前&#xff0c;我看了很多关于consul的服务治理&#xff0c;但发现基本上都是直接在powershell或者以命令工具的方式在服务器上面直接输入consul agent .... 来搭建启动consul集群&#xff0c;一旦把命令工具关掉&#xff0c;则consul无法再后台启动&…

POJ3177 Redundant Paths

POJ3177 Redundant Paths 文章目录Description题意&#xff1a;题解&#xff1a;代码&#xff1a;Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 21945 Accepted: 9056Description In order to get from one of the F (1 < F < 5,000) grazing fields (…

【最小生成树】路线规划(nowcoder 217603)

路线规划 nowcoder 217603 题目大意 给一个无向连通图&#xff0c;问你在经过的边最少的前提下&#xff0c;从1走过所有点&#xff0c;再走回1的最短距离 样例#1 输入样例#1 5 5 5 4 3 4 3 5 2 3 7 1 2 4 2 4 1输出样例#1 26样例解释#1 最少时间的路径: 1 →2 →…

计算几何学习小记

文章目录前言正题平面运算加减乘积常见问题直线/线段规范交点求垂线/点问题判断点在多边形的内/外求两个圆的交点前言 因为懒得画图理解计算几何所以要来这里鼓励一下自己 以后新学的应该也会写在这里。就当我是水博客 应该都是二维的计算几何&#xff0c;三维的有生之年再学 …

[XSY3343] 程序锁(DP)

XSY3343 先考虑如何判定一个填好的序列会不会gg&#xff1a; 若∃p,q,使s′[p1]t′[q1]−1\exist p,q,使s[p1]t[q1]-1∃p,q,使s′[p1]t′[q1]−1且∑i1ps′[i]∑j1qt′[j]≤0\sum_{i1}^{p}s[i]\sum_{j1}^{q}t[j]\leq 0∑i1p​s′[i]∑j1q​t′[j]≤0&#xff0c;则这个序列必g…

Asp.Net Core SignalR 用泛型Hub优雅的调用前端方法及传参

继续学习最近一直在使用Asp.Net Core SignalR(下面成SignalR Core)为小程序提供websocket支持,前端时间也发了一个学习笔记&#xff0c;在使用过程中稍微看了下它的源码,不得不说微软现在真的强大,很多事情都帮你考虑到了,比如使用Redis,使用Redis后,你的websocket就支持横向扩…

Network POJ-3694

Network POJ-3694 文章目录Description题意&#xff1a;样例分析&#xff1a;题解&#xff1a;代码&#xff1a;Description A network administrator manages a large network. The network consists of N computers and M links between pairs of computers. Any pair of com…

【树状数组】递增子序列(金牌导航 数据结构优化DP-1)

递增子序列 金牌导航 数据结构优化DP-1 题目大意 给出一个序列&#xff0c;让你求长度为m的单调递增子序列的个数 输入样例 3 2 1 1 2 7 3 1 7 3 5 9 4 8输出样例 2 12数据范围 1⩽n⩽104,1⩽m⩽100,0⩽ai⩽9876543211\leqslant n \leqslant 10^4,1\leqslant m \leqslant…

使用.NET Core 2.1的Azure WebJobs

WebJobs不是Azure和.NET中的新事物。 Visual Studio 2017中甚至还有一个默认的Azure WebJob模板&#xff0c;用于完整的.NET Framework。 但是&#xff0c;Visual Studio中以某种方式遗漏了.NET Core中WebJobs的类似模板。 在这篇文章中&#xff0c;我使用的是.NET Core 2.1来创…

P3265-[JLOI2015]装备购买【线性基,拟阵贪心】

正题 题目链接:https://www.luogu.com.cn/problem/P3265 题目大意 给出nnn个有权值的mmm元组。求最大独立集&#xff0c;即一个最大的集合且内部元素线性无关。且在集合最大的情况下权值和最小 通俗的说就是没有任何一个元素内被其他元素的倍数和表示。 解题思路 我们考虑线…

【决策单调性】玩具装箱(金牌导航 决策单调性优化DP-1)

玩具装箱 金牌导航 决策单调性优化DP-1 题目大意 给出若干个物品&#xff0c;把iii到jjj个物品装在一起的长度lj−i∑kijaklj-i\sum_{ki}^{j}a_klj−i∑kij​ak​&#xff08;物品必须是连续的&#xff09;&#xff0c;其代价为(lL)2(l L)^2(lL)2&#xff08;L为给出的常数…

HDU4612 Warm up

Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 65535/65535 K (Java/Others) Total Submission(s): 11184 Accepted Submission(s): 2573HDU4612 Warm up 文章目录Problem Description题意&#xff1a;题解&#xff1a;代码&#xff1a;Problem Description N …