문제

다음 그래프에서 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 오류가 떳고 헤더파일을 지우고 했던 기억이 나네요

+ Recent posts