BAEKJOON ONLINE JUDGE
한국정보올림피아드 1999
2644 촌수계산
https://www.acmicpc.net/problem/2644
![](https://t1.daumcdn.net/cfile/tistory/2127A23C57F3E8E122)
![](https://t1.daumcdn.net/cfile/tistory/2704793A57F3E8ED08)
11분
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 | #include <cstdio> #include <queue> #include <vector> using namespace std; int n, one, two; vector<int> family[101]; int visit[101]; void bfs() { queue<int> que; que.push(one); visit[one] = 1; while (!que.empty()) { int p = que.front(); que.pop(); if (p == two) { printf("%d\n", visit[p] - 1); return; } for (int i = 0; i < family[p].size(); i++) { if (visit[family[p][i]] == 0) { que.push(family[p][i]); visit[family[p][i]] = visit[p] + 1; } } } printf("-1\n"); } int main() { int m; int p, c; scanf("%d %d %d %d", &n, &one, &two, &m); for (int i = 0; i < m; i++) { scanf("%d %d", &p, &c); family[p].push_back(c); family[c].push_back(p); } bfs(); return 0; } | cs |