티스토리 뷰
출처 : https://www.acmicpc.net/problem/1389
1. 총 N명을 각각 bfs 돌며 합을 구한다.
2. 합을 비교하여 출력한다.
#include <iostream>
#include <cstring>
#include <queue>
#include <vector>
using namespace std;
vector <int> a[101];
int c[101], d[101], ans[101], t = 1000;
int N, M, r1, r2;
void BFS(int p)
{
queue <int> q;
q.push(p);
c[p] = 1;
while (!q.empty())
{
int x = q.front();
q.pop();
for (int i = 0; i < a[x].size(); i++)
{
int y = a[x][i];
if (c[y] == 0)
{
q.push(y);
c[y] = 1;
d[y] = d[x] + 1;
}
}
}
}
int main()
{
cin >> N >> M;
while (M--)
{
cin >> r1 >> r2;
a[r1].push_back(r2);a[r2].push_back(r1);
}
for (int i = 1; i <= N; i++)
{
memset(c, 0, sizeof(c));
memset(d, 0, sizeof(d));
BFS(i); int s = 0;
for (int j = 1; j <= N; j++)
{
s += d[j];
}
ans[i] = s;
}
for (int i = 1; i <= N; i++)
{
if (t > ans[i])
t = ans[i];
}
for (int i = 1; i <= N; i++)
{
if (t == ans[i])
{
cout << i;
break;
}
}
}
'알고리즘 > BOJ' 카테고리의 다른 글
[BOJ 2579] 계단 오르기 (0) | 2018.07.23 |
---|---|
[BOJ 1107] 리모컨 (0) | 2018.07.23 |
[BOJ 14888] 연산자 끼워넣기 (0) | 2018.07.15 |
[BOJ 14889] 스타트와 링크 (0) | 2018.07.15 |
[BOJ 14502] 연구소 (0) | 2018.07.15 |
- Total
- Today
- Yesterday
- 입출력
- SWEA
- 팁
- 미세먼지 안녕!
- 17144
- 이차원 배열과 연산
- 시간 복잡도
- STL
- scanf
- 새로운 게임 2
- 게리맨더링 2
- 역량 테스트
- 백준
- 삼성
- SW Expert Academy
- string
- 17140
- 2018 KAKAO BLIND RECRUITMENT
- 17142
- DP
- 알고리즘
- boj
- 17837
- 2018 카카오 블라인드 채용
- hackerrank
- 연구소 3
- 트렌드
- 17779
- 17143
- DFS
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |