백준 2644번 촌수계산

김두현·2023년 2월 12일
1

백준

목록 보기
97/133
post-thumbnail

🔒[문제 url]

https://www.acmicpc.net/problem/2644


🪄전체 코드

#include <iostream>
#include <queue>
#include <vector>
using namespace std;
#define IAMFAST ios_base::sync_with_stdio(false);cin.tie(0);cout.tie(0);

int n, x, y, m;
vector<int> graph[101];
int visited[101];//visited[i] : x부터 i까지의 거리

void INPUT()
{
	IAMFAST
	cin >> n >> x >> y >> m;
	for (int i = 0; i < m; i++)
	{
		int a, b; cin >> a >> b;
		graph[a].push_back(b);//a에서 b로 가는 길 연결
		graph[b].push_back(a);//b에서 a로 가는 길 연결
	}
}

void BFS()
{
	queue<int> q;
	q.push(x);//x에서 y까지의 거리를 구하면 된다.

	while (!q.empty())
	{
		int now = q.front();
		q.pop();

		for (int i = 0; i < graph[now].size(); i++)
		{
			int next = graph[now][i];
			if(visited[next]) continue;

			visited[next] = visited[now] + 1;
			q.push(next);
		}
	}
}

void SOLVE()
{
	BFS();
    
	//x부터 y까지의 거리 출력
	if (visited[y]) cout << visited[y];
    //y로 갈 수 없다면
	else cout << -1;
}

int main()
{
	INPUT();
	SOLVE();
}

🥇문제 후기

GOLD5 미만 난이도는 알고리즘 및 풀이 설명을 주석으로 대체합니다.
주석을 참고해주세요.


💕오류 지적 및 피드백은 언제든 환영입니다. 복제시 출처 남겨주세요!💕
💕좋아요와 댓글은 큰 힘이 됩니다.💕
profile
I AM WHO I AM

0개의 댓글