UVa 572 - Oil Deposits 【DFS】聯通塊問題
阿新 • • 發佈:2018-04-01
傳送門 nbsp pro oid sizeof ems amp ++ .net
題目鏈接
題目大意:
求圖中@連通塊的個數,只要兩個@相鄰就算它們是連通的(斜方向的也算相鄰)
#include <stdio.h> #include <string.h> char map[110][110]; int vis[110][110]; int n, m, ans; int dir[8][2] = { {0,1},{1,1},{1,0},{1,-1},{0,-1},{-1,-1},{-1,0},{-1,1} }; void dfs(int a,int b) { int i, j; vis[a][b] = 1; if(a > m || b > n || a < 1 || b < 1)return; for (int k = 0; k < 8; k++) { int x = a + dir[k][0]; int y = b + dir[k][1]; if (x < 1 || y<1 || x>m || y>n)continue; if (map[x][y] == ‘@‘&&vis[x][y] == 0) { dfs(x, y); } } }int main() { int i, j; while (scanf("%d%d", &m, &n)!= EOF, n || m) { getchar(); for (i = 1; i <= m; i++) { scanf("%s", map[i]+1); } memset(vis, 0, sizeof(vis)); ans = 0; for (i = 1; i <=m; i++) {for (j = 1; j <=n; j++) { if (map[i][j] == ‘@‘&&vis[i][j] == 0) { ans++; dfs(i, j); } } } printf("%d\n", ans); } return 0; }
2018-03-31
UVa 572 - Oil Deposits 【DFS】聯通塊問題