nyoj-27-水池数目

1 //题目地址:http://acm.nyist.net/JudgeOnline/status.php?pid=27
 2 //解题思路:裸的dfs, 遍历每个格子dfs访问当前格子的相领格子
 3 #include <stdio.h>
 4 #include <string.h>
 5 
 6 int map[110][110], vis[110][110];
 7 int dx[4] = {0, 0, -1, 1};
 8 int dy[4] = {-1, 1, 0, 0};
 9 
10 void dfs(int x, int y){
11         int i;
12         if(map[x][y] == 0 || vis[x][y] == 1)    return ;        //访问过,或者不存在水池则返回
13         vis[x][y] = 1;
14         for(i = 0; i  <4; i++){
15                 dfs(x + dx[i], y + dy[i]);
16         }
17 //        dfs(x - 1, y);
18 //        dfs(x +1, y);
19 //        dfs(x, y - 1);
20 //        dfs(x, y + 1);
21 }
22 
23 int main(){
24         int t, n, m, i, j;
25         int ans;
26         scanf("%d", &t);
27         while(t--){
28                 scanf("%d %d", &n, &m);
29                 memset(map, 0, sizeof(map));
30                 memset(vis, 0, sizeof(vis));
31                 for(i = 1; i <= n; i++){
32                         for(j = 1; j <= m; j++){
33                                 scanf("%d", &map[i][j]);
34                         }
35                 }
36                 ans = 0;
37                 for(i = 1; i <= n; i++){
38                         for(j = 1; j <= m; j++){
39                                 if(map[i][j] == 1 && vis[i][j] == 0){
40                                         ans++;
41                                         dfs(i, j);
42                                 }
43                         }
44                 }
45                 printf("%d\n", ans);
46         }
47         return 0;
48 }

时间: 2024-10-13 15:08:55

nyoj-27-水池数目的相关文章

nyoj 27水池数目

水池数目 时间限制:3000 ms  |  内存限制:65535 KB 难度:4 描述 南阳理工学院校园里有一些小河和一些湖泊,现在,我们把它们通一看成水池,假设有一张我们学校的某处的地图,这个地图上仅标识了此处是否是水池,现在,你的任务来了,请用计算机算出该地图中共有几个水池. 输入 第一行输入一个整数N,表示共有N组测试数据每一组数据都是先输入该地图的行数m(0<m<100)与列数n(0<n<100),然后,输入接下来的m行每行输入n个数,表示此处有水还是没水(1表示此处是水池

深搜 ,广搜,队列 nyoj 27 水池数目

水池数目 时间限制:3000 ms  |  内存限制:65535 KB 难度:4 描述 南阳理工学院校园里有一些小河和一些湖泊,现在,我们把它们通一看成水池,假设有一张我们学校的某处的地图,这个地图上仅标识了此处是否是水池,现在,你的任务来了,请用计算机算出该地图中共有几个水池. 输入 第一行输入一个整数N,表示共有N组测试数据 每一组数据都是先输入该地图的行数m(0<m<100)与列数n(0<n<100),然后,输入接下来的m行每行输入n个数,表示此处有水还是没水(1表示此处是水

NYOJ 27 水池数目 【简单搜索】

链接:click here~~ 题意: 水池数目 时间限制:3000 ms  |  内存限制:65535 KB 难度:4 描述 南阳理工学院校园里有一些小河和一些湖泊,现在,我们把它们通一看成水池,假设有一张我们学校的某处的地图,这个地图上仅标识了此处是否是水池,现在,你的任务来了,请用计算机算出该地图中共有几个水池. 输入 第一行输入一个整数N,表示共有N组测试数据 每一组数据都是先输入该地图的行数m(0<m<100)与列数n(0<n<100),然后,输入接下来的m行每行输入n个

NYOJ题目27水池数目

--------------------------------------------- 这道题有点坑,也怪我总是有点马虎,按照正常人的思维0是表示有水池啊竟然是1表示有水池,最坑的是写反了竟然还能过样例一直以为是自己程序问题review了好多遍.... 图论基础题,染色法即可. AC代码: import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sc=new

nyoj27水池数目 (DFS)

题目27 题目信息 运行结果 本题排行 讨论区 水池数目 时间限制:3000 ms  |  内存限制:65535 KB 难度:4 描述 南阳理工学院校园里有一些小河和一些湖泊,现在,我们把它们通一看成水池,假设有一张我们学校的某处的地图,这个地图上仅标识了此处是否是水池,现在,你的任务来了,请用计算机算出该地图中共有几个水池. 输入 第一行输入一个整数N,表示共有N组测试数据 每一组数据都是先输入该地图的行数m(0<m<100)与列数n(0<n<100),然后,输入接下来的m行每行

水池数目(nyoj27)(BFS)

水池数目 时间限制:3000 ms  |  内存限制:65535 KB 难度:4 描述 南阳理工学院校园里有一些小河和一些湖泊,现在,我们把它们通一看成水池,假设有一张我们学校的某处的地图,这个地图上仅标识了此处是否是水池,现在,你的任务来了,请用计算机算出该地图中共有几个水池. 输入 第一行输入一个整数N,表示共有N组测试数据 每一组数据都是先输入该地图的行数m(0<m<100)与列数n(0<n<100),然后,输入接下来的m行每行输入n个数,表示此处有水还是没水(1表示此处是水

ACM 水池数目

水池数目 时间限制:3000 ms  |  内存限制:65535 KB 难度:4 描述 南阳理工学院校园里有一些小河和一些湖泊,现在,我们把它们通一看成水池,假设有一张我们学校的某处的地图,这个地图上仅标识了此处是否是水池,现在,你的任务来了,请用计算机算出该地图中共有几个水池. 输入 第一行输入一个整数N,表示共有N组测试数据每一组数据都是先输入该地图的行数m(0<m<100)与列数n(0<n<100),然后,输入接下来的m行每行输入n个数,表示此处有水还是没水(1表示此处是水池

NYOJ27 水池数目

水池数目 时间限制:3000 ms  |  内存限制:65535 KB 难度:4 描述 南阳理工学院校园里有一些小河和一些湖泊,现在,我们把它们通一看成水池,假设有一张我们学校的某处的地图,这个地图上仅标识了此处是否是水池,现在,你的任务来了,请用计算机算出该地图中共有几个水池. 输入 第一行输入一个整数N,表示共有N组测试数据每一组数据都是先输入该地图的行数m(0<m<100)与列数n(0<n<100),然后,输入接下来的m行每行输入n个数,表示此处有水还是没水(1表示此处是水池

水池数目 ----- 图中有几个 单块的区域

水池数目 时间限制: 3000ms内存限制: 128000KB 64位整型: Java 类名: 上一题 提交 运行结果 统计 讨论版 下一题 题目描述 南阳理工学院校园里有一些小河和一些湖泊,现在,我们把它们通一看成水池,假设有一张我们学校的某处的地图,这个地图上仅标识了此处是否是水池,现在,你的任务来了,请用计算机算出该地图中共有几个水池. 输入 第一行输入一个整数N,表示共有N组测试数据 每一组数据都是先输入该地图的行数m(0<m<100)与列数n(0<n<100),然后,输入

NYOJ27.水池数目-DFS求连通块

水池数目 时间限制:3000 ms  |  内存限制:65535 KB 难度:4 描述 南阳理工学院校园里有一些小河和一些湖泊,现在,我们把它们通一看成水池,假设有一张我们学校的某处的地图,这个地图上仅标识了此处是否是水池,现在,你的任务来了,请用计算机算出该地图中共有几个水池. 输入 第一行输入一个整数N,表示共有N组测试数据每一组数据都是先输入该地图的行数m(0<m<100)与列数n(0<n<100),然后,输入接下来的m行每行输入n个数,表示此处有水还是没水(1表示此处是水池