문제
다음 그래프에서 1번 정점에서 각 정점으로 가는 최소 이동 간선수를 출력하세요.
입력설명
첫째 줄에는 정점의 수 N(1<=N<=20)와 간선의 수 M가 주어진다. 그 다음부터 M줄에 걸쳐 연결정보가 주어진다.
출력설명
1번 정점에서 각 정점으로 가는 최소 간선수를 2번 정점부터 차례대로 출력하세요.
입력예제
6 9
1 3
1 4
2 1
2 5
3 4
4 5
4 6
6 2
6 5
출력예제
2 : 3
3 : 1
4 : 1
5 : 2
6 : 2
#include <stdio.h>
#include <vector>
#include <queue>
using namespace std;
int check[30], distances[30];
int main(){
freopen("input.txt", "rt", stdin);
int n, m, i, a, b, x;
vector<int> map[30];
queue<int> Q;
scanf("%d %d", &n, &m);
for(i=1; i<=m; i++){
scanf("%d %d", &a, &b);
map[a].push_back(b);
}
Q.push(1);
check[1] = 1;
while(!Q.empty()){
x = Q.front();
Q.pop();
for(i=0; i<map[x].size(); i++){
if(check[map[x][i]] == 0){
check[map[x][i]] = 1;
Q.push(map[x][i]);
distances[map[x][i]] = distances[x]+1;
}
}
}
for(i=2; i<=n; i++){
printf("%d : %d\n", i, distances[i]);
}
return 0;
}
distance 변수명을 사용하고 싶었지만 using namespace std; 때문에 distances를 사용함.. 저번에도 algorithm헤더파일을 넣어놓고 count를 썻더니 reference is ambigous 오류가 떳고 헤더파일을 지우고 했던 기억이 나네요
'알고리즘 > it 취업을 위한 알고리즘 문제풀이' 카테고리의 다른 글
72. 공주 구하기(큐) (0) | 2021.06.07 |
---|---|
71. 송아지 찾기(BFS : 상태트리탐색) (0) | 2021.06.05 |
69. 이진트리 넓이우선탐색(BFS) (0) | 2021.06.04 |
68. 최소 비용 (가중치 방향그래프 인접 리스트:vector, STL pair 자료구조) (0) | 2021.06.04 |
67. 최소비용 (DFS: 인접행렬) (0) | 2021.06.03 |