๋ฌธ์
์ฝ๋
#include <iostream>
#define INF 1e9
using namespace std;
int N, M;
int d[101][101];
int main(){
ios_base::sync_with_stdio(false);
cin.tie(0);
for(int i=0; i<101; i++){
for(int k=0; k<101; k++){
if(i==k) d[i][k] = 0;
else d[i][k] = INF;
}
}
cin>>N>>M;
for(int i=0; i<M; i++){
int a, b; cin>>a>>b;
d[a][b] = 1;
d[b][a] = 1;
}
for(int k=1; k<=N; k++){
for(int a=1; a<=N; a++){
for(int b=1; b<=N; b++){
d[a][b] = min(d[a][b], d[a][k] + d[k][b]);
}
}
}
int chick1 = 0, chick2 = 0;
int min_d = 1e9;
for(int i=1; i<=N; i++){ // ์นํจ์ง ๊ณ ๋ฅด๊ธฐ
for(int j=i+1; j<=N; j++){
int temp_d = 0;
for(int k = 1; k<=N; k++){
temp_d += min(i==k?0:d[i][k], j==k?0:d[j][k]); // ์นํจ์ง๊น์ง์ ๊ฑฐ๋ฆฌ ๊ฐฑ์
}
if(temp_d < min_d){
min_d = temp_d;
chick1 = i;
chick2 = j;
}
}
}
cout<< chick1 << ' ' << chick2 << ' ' << min_d * 2;
}
ํ์ด
ํ๋ก์ด๋-์์ฌ์ํตํด์ ๋จผ์ ๊ฐ๊ฐ์ ๋ ธ๋๊น์ง์ ์ต๋จ๊ฑฐ๋ฆฌ๋ฅผ ์ ๋ถ ๊ฐฑ์ ์์ผ์ค๋๋ค.
๊ทธ ํ, ์นํจ์ง์ ๋ ๊ฐ์ง ๊ณจ๋ผ์ผ ํ๊ธฐ ๋๋ฌธ์ for๋ฌธ์ ๋๋ ค์ ๋ ๊ฐ์ ์นํจ์ง ๋ ธ๋๋ฅผ ๊ณ ๋ฅด๊ณ , ๋ชจ๋ ๊ฐ ๋ ธ๋์์ ๋ ์นํจ์ง ์ฌ์ด์ ๊ฑฐ๋ฆฌ๊ฐ ์งง์ ๊ฒ์ ๊ฑฐ๋ฆฌ๋ฅผ ๋ํ์ ๋, ๊ฐ์ฅ ์ต์์ ๊ฑฐ๋ฆฌ๋ฅผ ๊ฐ์ง๋ ๊ฐ์ ์ฐพ์ ์นํจ์ง์ ๋ ธ๋์ ๊ฑฐ๋ฆฌ์ ํฉ์ ๊ฐฑ์ ์์ผ์ค๋๋ค.
์๊ฐ ๋ณต์ก๋๋ O(N^3), O(100^3) ์ด๋ฏ๋ก O(10,000,000) ์์ ํด๊ฒฐ์ด ๊ฐ๋ฅํฉ๋๋ค.
'Algorithm ๐ง๐ปโ๐ป > ๋ฐฑ์ค(BOJ)' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ฐฑ์ค,c++] 10703๋ฒ - ์ ์ฑ (0) | 2022.09.21 |
---|---|
[๋ฐฑ์ค,c++] 22860๋ฒ - ํด๋ ์ ๋ฆฌ (small) (0) | 2022.09.21 |
[๋ฐฑ์ค,c++] 14500๋ฒ - ํ ํธ๋ก๋ฏธ๋ ธ (0) | 2022.09.18 |
[๋ฐฑ์ค,c++] 15661๋ฒ - ๋งํฌ์ ์คํํธ (0) | 2022.09.18 |
[๋ฐฑ์ค,c++] 6987๋ฒ - ์๋์ปต (0) | 2022.09.18 |
[๋ฐฑ์ค,c++] 21608๋ฒ - ์์ด ์ด๋ฑํ๊ต (0) | 2022.09.18 |
๋๊ธ