2019-06-10 14:56:36 C++

C++

Copy Copied! Full
#include <bits/stdc++.h> using namespace std; int dx[4]={0,0,-1,1}; int dy[4]={1,-1,0,0}; int W,H; int m[100][100]; int v[100][100]; int dfs(int x,int y,int d){ int ret = d; for(int i=0;i<4;i++){ int nx = x+dx[i]; int ny = y+dy[i]; if(nx<0||ny<0||nx>=H||ny>=W)continue; if(m[nx][ny]==1&&v[nx][ny]==0){ v[nx][ny]=1; ret = dfs(nx,ny,d+1); v[nx][ny]=0; } } return ret; } int main(void){ int ans = 0; cin >> W >> H; //W列H行 for(int i=0;i<H;i++)for(int j=0;j<W;j++)cin >> m[i][j]; for(int i=0;i<H;i++){ for(int j=0;j<W;j++){ if(m[i][j]==1){ v[i][j]=1; ans = max(ans,dfs(i,j,1)); v[i][j]=0; } } } cout << ans << endl; }