정답코드
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
|
#include<cstdio>
#include<queue>
#include<cstring>
#include<algorithm>
using namespace std;
int dx[]={0,0,1,-1}, dy[]={1,-1,0,0};
struct data{int y,x;};
queue<struct data> q;
char arr[53][53];
int copy_arr[53][53];
int n,m,x,y,ans=-987654321,cnt;
char temp;
void bfs(){
while(!q.empty()){
x=q.front().x;
y=q.front().y;
q.pop();
for(int k=0; k<4; k++){
int nx=x+dx[k];
int ny=y+dy[k];
if(0<=nx && nx<m && 0<=ny && ny<n){
if(arr[ny][nx]=='L' && copy_arr[ny][nx]==0){
copy_arr[ny][nx]=copy_arr[y][x]+1;
q.push({ny,nx});
}
}
}
}
for(int i=0; i<n; i++){
for(int j=0; j<m; j++){
ans=max(ans,copy_arr[i][j]);
}
}
memset(copy_arr,0,sizeof(copy_arr));
}
int main(void){
scanf("%d %d%c", &n, &m, &temp);
for(int i=0; i<n; i++){
for(int j=0; j<m; j++)
scanf("%c", &arr[i][j]);
scanf("%c", &temp);
}
for(int i=0; i<n; i++){
for(int j=0; j<m; j++){
if(arr[i][j]=='L'){
copy_arr[i][j]=1;
cnt=0;
q.push({i,j});
bfs();
}
}
}
printf("%d", ans-1);
return 0;
}
|
cs |
틀렸습니다 받은 코드
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
|
#include<cstdio>
#include<queue>
#include<cstring>
#include<algorithm>
using namespace std;
int dx[]={0,0,1,-1}, dy[]={1,-1,0,0};
struct data{int y,x;};
queue<struct data> q;
char arr[53][53];
int copy_arr[53][53];
int n,m,x,y,ans=-987654321,cnt;
char temp;
void bfs(){
while(!q.empty()){
x=q.front().x;
y=q.front().y;
q.pop();
for(int k=0; k<4; k++){
int nx=x+dx[k];
int ny=y+dy[k];
if(0<=nx && nx<m && 0<=ny && ny<n){
if(arr[ny][nx]=='L' && copy_arr[ny][nx]==0){
copy_arr[ny][nx]=copy_arr[y][x]+1;
q.push({ny,nx});
}
}
}
}
for(int i=0; i<n; i++){
for(int j=0; j<m; j++){
ans=max(ans,copy_arr[i][j]);
}
}
memset(copy_arr,0,sizeof(copy_arr));
}
int main(void){
scanf("%d %d%c", &n, &m, &temp);
for(int i=0; i<n; i++){
for(int j=0; j<m; j++)
scanf("%c", &arr[i][j]);
scanf("%c", &temp);
}
for(int i=0; i<n; i++){
for(int j=0; j<m; j++){
if(arr[i][j]=='L'){
cnt=0;
q.push({i,j});
bfs();
}
}
}
printf("%d", ans);
return 0;
}
|
cs |
이거 왜 틀렸습니다 뜨는지 납득시켜 주실 분..
'백준 2 > 그래프' 카테고리의 다른 글
| [백준 1865] 웜홀 (0) | 2020.12.08 |
|---|---|
| [백준 11657] 타임머신 (0) | 2020.12.08 |
| [백준 10159] 저울 (0) | 2020.12.08 |
| [백준 1956] 운동 (C++/Java) (0) | 2020.12.08 |
| [백준 1613] 역사 (C++/Java) (0) | 2020.12.08 |