https://www.acmicpc.net/problem/1389
#include <iostream>
#include <vector>
#include <queue>
using namespace std;
int main(){
vector<int> arr[101];
bool chk[101][101] = {0};
int sum[101] = {0};
int idx = 1;
int n,m,t1,t2;
cin >> n >> m;
for(int i = 1; i <= m; i++){
cin >> t1 >> t2;
arr[t1].push_back(t2);
arr[t2].push_back(t1);
}
for(int i = 1; i <= n; i++){
queue<int> q;
int cnt = 0;
q.push(i);
chk[i][i] = 1;
while(!q.empty()){
int q_size = q.size();
cnt +=1;
for(int k = 0; k < q_size; k++){
int tmp = q.front(); q.pop();
for(int j = 0; j < arr[tmp].size(); j++){
if(chk[i][arr[tmp][j]]) continue;
chk[i][arr[tmp][j]] = true;
sum[i] += cnt;
q.push(arr[tmp][j]);
}
}
}
if(sum[idx] > sum[i])
idx = i;
}
cout << idx;
}
반응형
'프로그래밍 > 문제풀이' 카테고리의 다른 글
[bfs] 백준 2589 보물섬 (0) | 2019.04.01 |
---|---|
[dfs] 백준 11403 경로 찾기 (0) | 2019.03.27 |
[dfs] 백준 2644 촌수계산 (0) | 2019.03.27 |
[dfs] 백준 9903 로또 (0) | 2019.03.27 |
[bfs, dfs] 백준 2573 빙산 (0) | 2019.03.25 |