您的位置:首页 > 娱乐 > 明星 > 合肥微信小程序开发的公司_制作ppt免费软件_如何推广一款app_卢松松外链工具

合肥微信小程序开发的公司_制作ppt免费软件_如何推广一款app_卢松松外链工具

2025/3/9 8:11:51 来源:https://blog.csdn.net/qq_37231166/article/details/145954757  浏览:    关键词:合肥微信小程序开发的公司_制作ppt免费软件_如何推广一款app_卢松松外链工具
合肥微信小程序开发的公司_制作ppt免费软件_如何推广一款app_卢松松外链工具

题目描述

在神秘的幻想⼤陆中,存在着 n 个古老而神奇的迷宫,迷宫编号从 1 到 n。有的迷宫之间可以直接往返,有的可以⾛到别的迷宫,但是不能⾛回来。玩家小杨想挑战⼀下不同的迷宫,他决定从 m 号迷宫出发。现在,他需要你帮助他统计:有多少迷宫可以直接到达 m 号迷宫,m 号迷宫可以直接到达其他的迷宫有多少,并求出他们的和。

需要注意的是,对于 i (1≤i≤n) 号迷宫,它总可以直接到达自身。

输入格式

第一行两个整数 n 和 m,分别表示结点迷宫总数,指定出发迷宫的编号。
下面 n 行,每行 n 个整数,表示迷宫之间的关系。对于第 i 行第 j 列的整数,1 表示能从 i 号迷宫直接到达 j 号迷宫,0 表示不能直接到达。

输出格式

一行输出空格分隔的三个整数,分别表示迷宫 m 可以直接到达其他的迷宫有多少个,有多少迷宫可以直接到达 m 号迷宫,这些迷宫的总和。

输入输出样例

输入 #1

6 4
1 1 0 1 0 0
0 1 1 0 0 0
1 0 1 0 0 1
0 0 1 1 0 1
0 0 0 1 1 0
1 0 0 0 1 1

输出 #1

3 3 6

题目要求给出有向图中可到达某节点的节点数与某节点可到达的节点数,我们可以用两个共轭的邻接表来存储。

#include<bits/stdc++.h>
using namespace std;int main(){int n, m;cin>>n>>m;vector<vector<int>> mat(n+1); // 某节点能到达的节点的邻接表vector<vector<int>> re_mat(n+1); // 能到达某节点的邻接表for(int i = 1;i<=n;i++){for(int j = 1;j<=n;j++){int tmp;cin>>tmp;if(tmp){mat[i].push_back(j);re_mat[j].push_back(i);}}}int ans1, ans2, ans3;ans2 = re_mat[m].size();ans1 = mat[m].size();ans3 = ans1+ans2;cout<<ans1<<' '<<ans2<<' '<<ans3;return 0;
}

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com