0 1 1 1 1

0 0 1 0 0

1 0 1 0 0

1 1 1 1 1

0 0 0 0 0



요런 맵 (0이 벽, 1이 길)있을때

최장경로 찾는 제일 구현이 쉬운 방법은 모든 시작점에 대해 BFS 돌리는건데

이거말고


연결가능한 덩어리 중의 한 점을 시작점으로 bfs돌린다음 그 점에서 구할수 있는 가장 먼 점이

이 덩어리에서 구할 수 있는 최장경로의 양 끝점 중 하나다.  <- 요런 알고리즘 있지않음? 


예전에 수업때 배운것같은데 이거 쓰면 틀리길래 내 기억이 틀렸거나 뭔가 잘못사용하고있나 궁금함


위에 올린 맵 기준으로 하면

그냥 모든 맵 스캔하다가 (0,1)에서 BFS 스타트, (2,0)이 현재 점에서 제일 먼 점이라는걸 찾음, 

(2,0)이 이 덩어리에서 최장경로의 양 끝점 중 하나란걸 알았으니까 거길 시작점으로 다시 BFS 돌림

그럼 (0,4)가 거리 8 떨어져 있다는 걸 알고 정답은 (2,0)->(0,4)인 길이 8 짜리 경로



이런 알고리즘 없나? 


내 기억이 구라까는건지 아니면 다른 알고리즘인데 내가 잘못쓰는건지 알려줘