1 条题解
-
0
自动搬运
来自洛谷,原作者为

xyx404
发接龙拉黑 | 新初三|蒟蒻| Link3 聚合页 link3.cc/xyx404 | 个人博客链接 xyx404.github.io搬运于
2025-08-24 22:56:20,当前版本为作者最后更新于2024-03-26 22:30:42,作者可能在搬运后再次修改,您可在原文处查看最新版自动搬运只会搬运当前题目点赞数最高的题解,您可前往洛谷题解查看更多
以下是正文
思路:
首先看题,让我们求迷宫 可以直接到达其他的迷宫有多少个,有多少迷宫可以直接到达 号迷宫,和这些迷宫的总和。
先看迷宫 可以直接到达其他的迷宫,是什么意思呢?
其实就是让我们看当历遍的迷宫是 时有多少个为真。
由此得出代码:
for(int i=1;i<=n;i++){ if(jz[m][i]==1){ // 我们只用查看 m 迷宫有多少个 1 sum1++; } }然后我们看多少迷宫可以直接到达 号迷宫,这又是什么意思呢?
其实就是查看有多少个迷宫的 也就是 为真。
由此得出代码:
for(int i=1;i<=n;i++){ if(jz[i][m]==1)sumzj++; }让我们看一下这两份代码循环的条件是不是相同的?
是对吧,由此合并两份代码:
for(int i=1;i<=n;i++){ if(jz[m][i]==1){ sum1++; } if(jz[i][m]==1)sumzj++; }最后看这些迷宫的总和,没有坑直接输出就行。
完整代码
#include<bits/stdc++.h> using namespace std; bool jz[1001][1001]; long long sumzj; long long sum1; int main(){ int n,m; cin>>n>>m; for(int i=1;i<=n;i++){ for(int j=1;j<=n;j++){ cin>>jz[i][j]; } } for(int i=1;i<=n;i++){ if(jz[m][i]==1){ sum1++; } if(jz[i][m]==1)sumzj++; } cout<<sum1<<" "<<sumzj<<" "<<sum1+sumzj; return 0; }
- 1
信息
- ID
- 9971
- 时间
- 1000ms
- 内存
- 128MiB
- 难度
- 2
- 标签
- 递交数
- 0
- 已通过
- 0
- 上传者