| #include <iostream> #include <queue> | |
| using namespace std; | |
| bool map[102][102]; | |
| bool visit[101] = {0}; | |
| int N, M; | |
| int sum; | |
| int bfs(int start, int end) | |
| { | |
| queue< pair< int, int> > q; | |
| for(int i=1; i<=N; i++) visit[i] = 0; | |
| q.push({start, 0}); | |
| while(!q.empty()) | |
| { | |
| int x=q.front().first; | |
| int num=q.front().second; | |
| q.pop(); | |
| if(x==end) {return num;} | |
| for(int i=1; i<=N; i++) | |
| if(i!= start && map[x][i] && !visit[i]) { q.push({i, num+1}); visit[i]=1;} | |
| } | |
| } | |
| int main() | |
| { | |
| cin >> N >> M; | |
| for(int i=1; i<=M; i++) | |
| { | |
| int a, b; | |
| cin >> a >> b; | |
| map[a][b]=1; | |
| map[b][a]=1; | |
| } | |
| int min = 100; | |
| int min_index; | |
| for(int i=1; i<=N; i++) | |
| { | |
| sum=0; | |
| for(int j=1; j<=N; j++) | |
| { | |
| visit[i]=1; | |
| if(i!=j) sum+=bfs(i,j); | |
| } | |
| if(min>sum) { min=sum; min_index=i;} | |
| } | |
| cout << min_index; | |
| } |
'알고리즘 문제 풀이 > 1DP_과제(~180615)' 카테고리의 다른 글
| 171121_1211_Ladder2 (0) | 2017.11.21 |
|---|---|
| 171120_1210_Ladder1 (0) | 2017.11.20 |
| 171119_11724_연결 요소의 개수 (0) | 2017.11.19 |
| 171118_2468_안전 영역 (0) | 2017.11.18 |
| 171117_2583_영역 구하기 (0) | 2017.11.17 |