[C++] 백준 11403번: 경로 찾기

2023. 7. 17. 15:41·problem solving/백준

🔗 문제

11403번: 경로 찾기

 

11403번: 경로 찾기

가중치 없는 방향 그래프 G가 주어졌을 때, 모든 정점 (i, j)에 대해서, i에서 j로 가는 길이가 양수인 경로가 있는지 없는지 구하는 프로그램을 작성하시오.

www.acmicpc.net

가중치 없는 방향 그래프 G가 주어졌을 때, 모든 정점 (i, j)에 대해서, i에서 j로 가는 길이가 양수인 경로가 있는지 없는지

 

🖍 풀이

DFS를 이용하여 풀었다.

N개의 각 정점으로 부터 DFS를 이용해 연결된 모든 정점을 visited로 표시했다.

여기서 DFS에서 사이클을 무한반복하지 않도록 방문하지 않은 정점으로만 가는 조건을 반드시 걸어주어야 한다.

 

💾  소스

#include <iostream>

const int MAX  = 100 + 1;

bool graph[MAX][MAX];
bool visited[MAX] = {false, };
int N = 0;

void DFS(const int idx)
{
    for(int i=0; i<N; ++i)
    {
        if(graph[idx][i] && !visited[i]) // visited로 사이클 방지
        {
            visited[i] = true;
            DFS(i);
        }
    }
}

int main()
{
    std::cin >> N;

    for(int i=0; i<N; ++i)
        for(int j=0; j<N; ++j)
            std::cin >> graph[i][j];

    
    for(int i=0; i<N; ++i)
    {
        for(int j=0; j<N; ++j)
        {
        	// 연결된 간선을 타내려간다.
            if(!graph[i][j] || visited[j]) continue; // visited로 사이클 방지
   
            DFS(j);

            for(int k=0; k<N; ++k)
            {
                if(!visited[k]) continue;
                //i-j가 연결되어서 타고 갔는데 k도 방문 했다? 
                //i-k도 연결되있다. 인접행렬에 표시
                graph[i][k] = true;
                
                // 다음 시작 정점을 위해 초기화
                visited[k] = false;
            }
        }
    }

    //std::cout << "==============\\n";
    for(int i=0; i<N; ++i)
    {
        for(int j=0; j<N; ++j)
            std::cout << graph[i][j] << ' ';
        std::cout << '\\n';
    }

    return 0;
}
저작자표시 비영리 변경금지 (새창열림)
'problem solving/백준' 카테고리의 다른 글
  • [C++] 백준 1937번: 욕심쟁이 판다
  • [C++] 백준 1676번: 팩토리얼 0의 개수
  • [C++] 백준 16137번: 견우와 직녀
  • [C++] 백준 9376번: 탈옥
u1qns
u1qns
http://github.com/u1qns
  • u1qns
    개발 블로그
    u1qns
  • 전체
    오늘
    어제
    • 분류 전체보기 (173) N
      • 회고 (1)
      • programming (17)
        • 개념 정리 (6)
        • CI CD (1)
        • 트러블 슈팅 (0)
        • 환경설정 및 팁 (7)
      • problem solving (155) N
        • 개념 정리 (3)
        • 백준 (129) N
        • SWEA (15)
        • 프로그래머스 (4)
  • 블로그 메뉴

    • 홈
    • 방명록
  • 링크

    • 깃허브
  • 공지사항

  • 인기 글

  • 태그

    백준
    SWEA
    되추적
    cmath
    cpp
    미해결
    완전탐색
    삼성청년SW아카데미
    POW
    DP
    그리디
    BFS
    투포인터
    C++
    SSAFY
    boj
    구현
    SSAFY수료식
    DFS
    HELLOSSAFY
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
u1qns
[C++] 백준 11403번: 경로 찾기
상단으로

티스토리툴바