자고일어나니코딩왕
자일코의 CODING
자고일어나니코딩왕
전체 방문자
오늘
어제
  • 분류 전체보기 (64)
    • [Linux]리눅스 (1)
    • [NETWORK]네트워크 (17)
    • [PS] 알고리즘문제풀이 (16)
    • [SQL] (13)
    • [ALGORITHM]알고리즘개념 (9)
    • [DATA_STRUCTURE]자료구조 (1)
    • [PYTHON]파이썬 (0)
    • [정보처리기사] (5)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • BIOS #MBR #LILO #Kernel #init
  • virtualbox
  • 원격접속
  • 리눅스 #파일시스템 #디렉토리
  • 리눅스
  • ssh

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
자고일어나니코딩왕

자일코의 CODING

[백준,PS,BFS][PYTHON] #1012 . 유기농배추
[PS] 알고리즘문제풀이

[백준,PS,BFS][PYTHON] #1012 . 유기농배추

2020. 6. 15. 21:21

from collections import deque

def bfs(a,b,m,n):
    dx = [0,0,1,-1]
    dy = [1,-1,0,0]
    global count
    count = count +1 #bfs를 할때마다 map에서 순서를 구분해주기 위해서
    maps[a][b] = count
    while q:        
        for _ in range(len(q)):
            x,y = q.popleft()
            
            for i in range(4):
                nx = x + dx[i]
                ny = y + dy[i]
                
                if 0<=nx <n and 0<=ny<m:
                    if visited[nx][ny] == 0 and maps[nx][ny] == 1 :
                        q.append([nx,ny])
                        maps[nx][ny]   = count #bfs횟수를 map에 넣어준다.
                        visited[nx][ny] = 1#방문함으로 바꿔준다.
            
        


test_case = int(input())


for _ in range(test_case):
    count =0
    m,n,num = map(int, input().split())
    maps = [[0] * m for _ in range(n)]
    visited = [[0] * m for _ in range(n)]
    
    q = deque()
    
    for i in range(num):
        y,x = map(int,input().split())
        maps[x][y] =1
        
    for a in range(n):
        for b in range(m):
            if maps[a][b] == 1 and visited[a][b] ==0:#map의 다음갈곳이 1이면서 방문하지않았던곳을 큐에넣어줘야함
                q.append([a,b])#큐에 집어넣고
                visited[a][b] = 1#방문함으로 바꿔주고
                bfs(a,b,m,n)#bfs실시함
    
    result = max(map(max,maps)) # 2차원 리스트에서 최대값을 구하는 방법
    print(result)

#실행결과부분
#for i in range(len(maps)):
#    print(maps[i] , sep = " \n")
#print("@@@@@@@@@@@@@@@@")                
#for i in range(len(visited)):
#    print(visited[i] , sep = " \n")


    

'[PS] 알고리즘문제풀이' 카테고리의 다른 글

[백준,PS,BFS][PYTHON] #2468 . 안전영역  (0) 2020.06.17
[백준,PS,BFS][PYTHON] #2644 . 촌수계산  (0) 2020.06.16
[백준,PS,BFS][PYTHON] #2178 . 미로탐색  (0) 2020.06.15
[백준,PS,그래프탐색][PYTHON] #1707. 이분그래프  (0) 2020.06.10
[백준,PS,그래프탐색][PYTHON] #13265. 색칠하기  (0) 2020.06.10
    '[PS] 알고리즘문제풀이' 카테고리의 다른 글
    • [백준,PS,BFS][PYTHON] #2468 . 안전영역
    • [백준,PS,BFS][PYTHON] #2644 . 촌수계산
    • [백준,PS,BFS][PYTHON] #2178 . 미로탐색
    • [백준,PS,그래프탐색][PYTHON] #1707. 이분그래프
    자고일어나니코딩왕
    자고일어나니코딩왕
    열코!

    티스토리툴바