[C++]백준 2644번:치수계산

検出された言語がありません。

入力言語を確認してください。2644번: 마을 수 계산 문제 한국은 가족 또는 친척 간의 관계를 마을 수라는 단위로 표현하는 독특한 문화를 가지고 있다. 이러한 촌수는 다음과 같은 방식으로 계산된다. 기본적으로 부모와 자녀 사이를 1촌으로 정의하고, 앞으로 사람들 사이의 마을 수를 계산한다. 예를 들어 나와 아버지, 아버지와 할아버지는 각각 1촌으로 나가고, 할아버지는 2촌이 되고, 아버지 형제와 할아버지는 1촌, 나와 아버지 형제와는 3촌이 된다. 여러 사람에 대한 부모-자녀 관계가 주어졌을 때 주어진 두 사람의 마을 수를 계산하는 프로그램을 만들어라. 입력은 1,2····www.acmicpc.net2644번: 마을 수 계산 문제 한국은 가족 또는 친척 간의 관계를 마을 수라는 단위로 표현하는 독특한 문화를 가지고 있다. 이러한 촌수는 다음과 같은 방식으로 계산된다. 기본적으로 부모와 자녀 사이를 1촌으로 정의하고, 앞으로 사람들 사이의 마을 수를 계산한다. 예를 들어 나와 아버지, 아버지와 할아버지는 각각 1촌으로 나가고, 할아버지는 2촌이 되고, 아버지 형제와 할아버지는 1촌, 나와 아버지 형제와는 3촌이 된다. 여러 사람에 대한 부모-자녀 관계가 주어졌을 때 주어진 두 사람의 마을 수를 계산하는 프로그램을 만들어라. 입력은 1,2····www.acmicpc.net지금까지 c로만 알고리즘 문제를 풀었는데 이제는 c탈출을 해보고 싶어서 c++로 첫번째 문제를 풀었네요. c++ 문법을 모르는 상태에서 여기저기 검색하면서 마구 풀었습니다 ㅎ치수니까 트리로 풀어야 하나? 생각하기도 하지만 그래프로 풀 수 있는 문제입니다 input에서 두 번째 줄에 들어오는 두 사람을 각각 a, b라고 하고 네 번째 줄에서 들어오는 친자 관계 두 사람은 relation이라는 2차원 배열에 표시를 합니다.a를 먼저 queue에 넣고, 각 queue의 front에 위치한 사람을 중심으로 부모와 자녀 관계를 가진 사람을 queue에 넣습니다 그리고 평소 그래프 탐색 문제에서 노드 방문 여부를 체크하는 visited에는 1로 표시를 해주었는데, 이번 문제에서는 visited에 촌수를 적어주는 대신 문제와 다르게 자기 자신과의 관계를 촌수 1로 가정해서 씁니다(Ex. 나와 나 사이의 치수=1, 나와 아버지 사이의 치수=2) 그리고 마지막으로 visited[b]가 0이 아니면 visited[b]에서 1을 뺀 값을 출력해 줍니다 (코드)#include<iostream>#include<queue>는 이름 공간 std를 사용하고 있습니다;int relation[101];int visited[101];int n, m, a, b;void BFS();int main(){ios:::sync_with_stdio(false);in.tie(NULL);out.tie(NULL);in>>n>>a>>b>>mnt x>mnt x, mnt x, mnt x, y;while(m–){in>>x>>y;elation[x]=1;elation[y][x]=1;}BFS();if(visited[b])out<<visited[b]-1;elseout<<-1;}void BFS(){ueue<int>myqueue.push(a);isited[a]=1.(!myqueue.(){person queue=myqueue.myqueue.front();yqueue.pop();nt tmp=visited[person];for(inti=1;i<=n;i++){if(relation[person]&&!visited[i]){yqueue.push(i);isited[i]=tmp+1;}}}}}}}이기 때문입니다난이도 : solved.ac 실버2 #cpp #백준 #PS #그래프탐색 #bfs #내비우선탐색

error: Content is protected !!