https://school.programmers.co.kr/learn/courses/30/lessons/86971
λ¬Έμ μ€λͺ
nκ°μ μ‘μ νμ΄ μ μ μ ν΅ν΄ νλμ νΈλ¦¬ ννλ‘ μ°κ²°λμ΄ μμ΅λλ€. λΉμ μ μ΄ μ μ λ€ μ€ νλλ₯Ό λμ΄μ νμ¬μ μ λ ₯λ§ λ€νΈμν¬λ₯Ό 2κ°λ‘ λΆν νλ €κ³ ν©λλ€. μ΄λ, λ μ λ ₯λ§μ΄ κ°κ² λλ μ‘μ νμ κ°μλ₯Ό μ΅λν λΉμ·νκ² λ§μΆκ³ μ ν©λλ€.
μ‘μ νμ κ°μ n, κ·Έλ¦¬κ³ μ μ μ 보 wiresκ° λ§€κ°λ³μλ‘ μ£Όμ΄μ§λλ€. μ μ λ€ μ€ νλλ₯Ό λμ΄μ μ‘μ ν κ°μκ° κ°λ₯ν λΉμ·νλλ‘ λ μ λ ₯λ§μΌλ‘ λλμμ λ, λ μ λ ₯λ§μ΄ κ°μ§κ³ μλ μ‘μ ν κ°μμ μ°¨μ΄(μ λκ°)λ₯Ό return νλλ‘ solution ν¨μλ₯Ό μμ±ν΄μ£ΌμΈμ.
μ νμ¬ν
- nμ 2 μ΄μ 100 μ΄νμΈ μμ°μμ λλ€.
- wiresλ κΈΈμ΄κ° n-1μΈ μ μν 2μ°¨μ λ°°μ΄μ
λλ€.
- wiresμ κ° μμλ [v1, v2] 2κ°μ μμ°μλ‘ μ΄λ£¨μ΄μ Έ μμΌλ©°, μ΄λ μ λ ₯λ§μ v1λ² μ‘μ νκ³Ό v2λ² μ‘μ νμ΄ μ μ μΌλ‘ μ°κ²°λμ΄ μλ€λ κ²μ μλ―Έν©λλ€.
- 1 ≤ v1 < v2 ≤ n μ λλ€.
- μ λ ₯λ§ λ€νΈμν¬κ° νλμ νΈλ¦¬ ννκ° μλ κ²½μ°λ μ λ ₯μΌλ‘ μ£Όμ΄μ§μ§ μμ΅λλ€.
μν λ¬Έμ μΈλ° dfs, bfsλ‘ ν μ μλ€.
dfsλ‘ νλ €λ€κ° λκ° μ μλΌμ bfsλ‘ νμ
λμ νμ΄
#include <string>
#include <vector>
#include <iostream>
#include <queue>
using namespace std;
int graph[101][101];
bool visited[101] = {0}; // λ
Έλ λ°©λ¬Έ
int N;
int bfs(int j){
queue<int> q;
q.push(j);
visited[j] = 1;
int re = 1;
while(!q.empty()){
int a = q.front();
q.pop();
for(int i=1; i<=N; ++i){
if(visited[i]==0 && graph[a][i]){
q.push(i);
visited[i] = 1;
re++;
}
}
}
return re;
}
int solution(int n, vector<vector<int>> wires) {
N = n;
int answer = 101;
for(int i=0; i<wires.size(); ++i){
graph[wires[i][0]][wires[i][1]] = 1;
graph[wires[i][1]][wires[i][0]] = 1;
}
for(int i=0; i<wires.size(); ++i){
vector<int> v;
fill(visited, visited+101, 0);
int x = wires[i][0];
int y = wires[i][1];
graph[x][y] = 0;
graph[y][x] = 0;
for(int j=1; j<=N; ++j){
int d=0;
if(!visited[j]){
d = bfs(j);
// cout << d<<" - ";
v.push_back(d);
}
}
int a = abs(v[0] - v[1]);
// cout << a <<"\n";
if(answer > a) answer = a;
if(answer == 0) break;
graph[x][y] = 1;
graph[y][x] = 1;
}
return answer;
}
'π μκ³ λ¦¬μ¦ > Programmers' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[C++/PGS] Lv.0 : κ²ΉμΉλ μ λΆμ κΈΈμ΄ (ꡬν) (0) | 2023.05.27 |
---|---|
[C++/PGS] Lv.0 : μ°μλ μμ ν© (ꡬν) (0) | 2023.05.26 |
[C++/PGS] Lv.2 : νΌλ‘λ (μμ νμ) (0) | 2023.05.26 |
[C++/PGS] Lv.2 : λ€λ¦¬λ₯Ό μ§λλ νΈλ (ν) (0) | 2023.04.13 |
[C++/PGS] Lv.3 : λ² μ€νΈμ¨λ² (ν΄μ / mapμ λ ¬) (0) | 2023.04.13 |