Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 5 additions & 5 deletions problems/kamacoder/0103.水流问题.md
Original file line number Diff line number Diff line change
Expand Up @@ -213,27 +213,27 @@ int main() {
cin >> grid[i][j];
}
}
// 标记从第一组边界上的节点出发,可以遍历的节点
// 标记从 第一组边界(左边界和上边界) 逆流而上可以到达的节点
vector<vector<bool>> firstBorder(n, vector<bool>(m, false));

// 标记从第一组边界上的节点出发,可以遍历的节点
// 标记从 第二组边界(右边界和下边界) 逆流而上可以到达的节点
vector<vector<bool>> secondBorder(n, vector<bool>(m, false));

// 从最上和最下行的节点出发,向高处遍历
// 从最左和最右列的节点出发,向高处遍历
for (int i = 0; i < n; i++) {
dfs (grid, firstBorder, i, 0); // 遍历最左列,接触第一组边界
dfs (grid, secondBorder, i, m - 1); // 遍历最右列,接触第二组边界
}

// 从最左和最右列的节点出发,向高处遍历
// 从最上和最下行的节点出发,向高处遍历
for (int j = 0; j < m; j++) {
dfs (grid, firstBorder, 0, j); // 遍历最上行,接触第一组边界
dfs (grid, secondBorder, n - 1, j); // 遍历最下行,接触第二组边界
}
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++) {
// 如果这个节点,从第一组边界和第二组边界出发都遍历过,就是结果
if (firstBorder[i][j] && secondBorder[i][j]) cout << i << " " << j << endl;;
if (firstBorder[i][j] && secondBorder[i][j]) cout << i << " " << j << endl;
}
}

Expand Down