JOIの薄氷渡りという問題を正解することができません。
https://atcoder.jp/contests/joi2009yo/tasks/joi2009yo_d
このコードをどのように書き換えれば
正答を得ることができますか?
C++
1#include <bits/stdc++.h> 2 3using namespace std; 4using Node = vector<vector<int>>; 5vector<int> dxs ={1,0,-1,0}; 6vector<int> dys ={0,1,0,-1}; 7 int n,m; 8int ans = 0; 9// 深さ優先探索 10vector<bool> seen; 11void dfs(int x,int y,int v,vector<vector<int>> &G) { 12 G[x][y] = 0; 13 v++; 14 15ans = max(v,ans); 16 17 for(int i = 0; i < 4; i++){ 18 int x2 = x + dxs[i]; 19 int y2 = y + dys[i]; 20 if((0 <= x2 && x2 < x) && (0 <= y2 && y2 < y)){ 21 if(G[x2][y2] == 1){ 22 dfs(x2,y2,v,G); 23 } 24 } 25 } 26G[x][y] = 1; 27} 28 29int main() { 30 31 cin >> n >> m; 32 33 vector<vector<int>> G(n,vector<int>(m)); 34 35 36 for(int i = 0; i < n; i++){ 37for(int j = 0; j < m; j++){ 38 cin >> G[i][j]; 39 40} 41 } 42 for(int i = 0; i < n; i++){ 43for(int j = 0; j < m; j++){ 44 if(G[i][j]==1){ 45 46 dfs(i,j,0,G); 47} 48} 49 } 50 cout << ans; 51} 52
しつもんはなんですか
このコードで、正答できない原因を教えていただきたいです。
質問を書かず、すいませんでした。
解説と正答例を見てもわからないということですか?
正答例を見てみると理解できるのですが、それを模写したこのコードではすべての入力に対して1が出力されてしまい、自分では原因が分からず質問をしました。
重ねてお詫び申し上げます。
回答1件
あなたの回答
tips
プレビュー