티스토리 뷰

출처 : 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
링크
«   2024/10   »
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
글 보관함