Algorithm/SWExpertAcademy
1238. [S/W 문제해결 기본] 10일차 - Contact
1일1코딩
2020. 2. 24. 21:07
LEVEL D4
SW Expert Academy
SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!
swexpertacademy.com
BFS 기본문제 유형이다.
소스보기
더보기
#include <stdio.h>
#include <string.h>
#include <queue>
using namespace std;
int map[101][101];
int visited[101];
int N, start, maxVal;
int bfs()
{
int lastNum;
queue<int> que;
que.push(start);
visited[start] = 1;
while (!que.empty()) {
int queSize = que.size();
lastNum = 0;
for (int i = 0; i < queSize; i++) {
int n = que.front(); que.pop();
if (lastNum < n) {
lastNum = n;
}
for (int j = 1; j <= maxVal; j++) {
if (map[n][j] && visited[j] == 0) {
que.push(j);
visited[j] = 1;
}
}
}
}
return lastNum;
}
int main()
{
int tc = 1;
for (; tc <= 10; tc++) {
memset(map, 0, sizeof(map));
memset(visited, 0, sizeof(visited));
maxVal = 0;
scanf("%d %d", &N, &start);
for (int i = 0; i < N / 2; i++) {
int from, to;
scanf("%d %d", &from, &to);
map[from][to] = 1;
if (maxVal < from) {
maxVal = from;
}
if (maxVal < to) {
maxVal = to;
}
}
printf("#%d %d\n",tc, bfs());
}
}