λ¬Έμ :
λΆμ :
μ΄ λ¬Έμ μμ νλ‘μ΄λ μμ¬μ μ΄μ©ν΄ νμλ€. λ¬Έμ μ΄ν΄κ° μ μλμλλ°
νμ₯ ν보μ μ μ, νμ₯ ν보μ μ
νμ₯ ν보 μΈλ±μ€
λ₯Ό μΆλ ₯νλ λ¬Έμ μλ€.
μ΄ λͺ¨μμ μΉκ΅¬, μΉκ΅¬μ μΉκ΅¬, μΉκ΅¬μ μΉκ΅¬μ μΉκ΅¬ .. κ΄κ³μ λν΄μ 1, 2, 3μ μ κ°μ§λ€. νμ₯μ μ μκ° κ°μ₯ μ μ μ¦ κ°λ₯ν λͺ¨λ μ¬λλ€μ λν΄μ μΉκ΅¬μΈ μ¬λμ΄ νμ₯ νλ³΄λ‘ μ ν©νλ€κ³ μκΈ°νλ€.
κ·Έλ μ§λ§ ν μ¬λμ΄ μΉκ΅¬, μΉκ΅¬μ μΉκ΅¬ κ΄κ³κ° μμ λ μ΄ μ¬λμ μ μλ μΉκ΅¬μ μΉκ΅¬κ΄κ³λ‘ μ³μ 2μ μ΄ λλ€.
λ°λΌμ f[s1][s2]μ f[s2][s1]μΌλ‘ s1κ³Ό s2κ° μΉκ΅¬ κ΄κ³μμ λνλ΄μ£Όμκ³ νλ‘μ΄λ μμ¬ ν¨μλ₯Ό κ±°μΉκ³ λ λ€ 1, 2, 3 κ°μ κ°μ§λλ‘ λ°°μ΄ κ°μ λ³κ²½ν΄ μ€λ€. νμ κ° μ¬λμ μΉκ΅¬ κ΄κ³λ₯Ό νμΈνμ¬ μ μλ₯Ό 맀길 λ max κ°μΌλ‘ λν λΈ λ€ κ°μ΄ κ°μ₯ μμ μ¬λμ μ μ, κ·Έ μ μλ₯Ό κ°μ§ μ¬λμ μ, κ·Έ μ μ κ°μ§ μ¬λμ μΈλ±μ€ μμΌλ‘ μΆλ ₯νκ² νμλ€.
c++ μ½λ :
//
// 2660_boss.cpp
// SOMAπ©π»π»
//
// Created by JoSoJeong on 2021/02/18.
//
#include <stdio.h>
#include <iostream>
#include <vector>
using namespace std;
#define MAX 51
#define INF 100000
int N;
int f[MAX][MAX];
int score[MAX];
void find_boss(){
//k κ±°μ³κ°λ λ
Έλ
for(int k = 1; k< N + 1; k++){
//i μΆλ° λ
Έλ
for(int i = 1; i < N + 1; i++){
//j λμ°© λ
Έλ
for(int j = 1; j < N + 1; j++){
if(f[i][k] + f[k][j] < f[i][j] ){ //κ±°μ³ κ°λ κΈΈ μμΌλ©΄
f[i][j] = f[i][k] + f[k][j];
}
}
}
}
}
int main(){
int s1 = 0, s2 = 0;
cin >> N;
for(int i = 1; i < N+1; i++){
for(int j = 1; j < N + 1; j++){
f[i][j] = INF; // μ 체λ₯Ό 무νλλ‘ μ΄κΈ°ν
}
}
for(int i = 1; i <N+1; i++){
f[i][i] = 0; //κ°μ΄λ° 0μΌλ‘ μ΄κΈ°ν
}
while(true){
cin >> s1 >> s2;
if(s1 == -1 and s2 == -1){
break;
}
f[s1][s2] = 1; //μλ‘ μΉκ΅¬ κ΄κ³μμ νμ
f[s2][s1] = 1;
}
// λ°°μ΄ μ λ€μ΄κ°λ νμΈ μ©
// for(int i = 1; i <N+1; i++){
// for(int j = 1; j < N+1; j++){
// cout <<f[i][j] << " ";
// }
// cout << endl;
// }
find_boss();
//find_boss νμ ν λ°°μ΄
// for(int i = 1; i <N+1; i++){
// for(int j = 1; j < N+1; j++){
// cout <<f[i][j] << " ";
// }
// cout << endl;
// }
//
// 0 1 2 2 3
// 1 0 1 1 2
// 2 1 0 1 1
// 2 1 1 0 1
// 3 2 1 1 0
int man_score = -1; // νμ₯ ν보 μ μ
for(int i = 1; i < N+1; i++){
int max = 0;
for(int j = 1; j < N+1; j++){
if(f[i][j] > max){
max = f[i][j];
}
}
score[i] = max; //1 -> 3, 2 -> 2, 3 -> 2, 4 -> 2, 5 -> 3
cout << "man_score : " << man_score << endl; // -1, 3, 2, 2, --> 2 λκ° λμꡬλ
if(man_score > max || man_score == -1){
man_score = max; // i:1 -> 3 // i:2 -> 2
cout << " man : " << man_score << endl;
}
}
int count = 0;
for(int i = 1; i < N+1; i++){
if(score[i] == man_score){ //μ μκ° κ°μ μ¬λλ€ μ«μ μ
count++;
}
}
cout << man_score << " " << count << endl; // μ μ, ν보μ μ
for(int i = 1; i < N+1; i++){
if(score[i] == man_score){
cout << i << " ";
}
}
cout << endl;
return 0;
}
'Algorithmπ° > λ°±μ€' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[λ°±μ€] 2667 λ¨μ§ λ²νΈ λΆμ΄κΈ° BFS (0) | 2021.02.19 |
---|---|
[λ°±μ€] 18870 μ’ν μμΆ (0) | 2021.02.19 |
[λ°±μ€] 11403 κ²½λ‘ μ°ΎκΈ° Floyd Warshall (0) | 2021.02.18 |
[λ°±μ€] 2178 λ―Έλ‘ νμ bfs (0) | 2021.02.17 |
[λ°±μ€] 1931 νμμ€ λ°°μ (0) | 2021.02.17 |
λκΈ