๋ฌธ์
n๊ฐ์ ์ก์ ํ์ด ์ ์ ์ ํตํด ํ๋์ ํธ๋ฆฌ ํํ๋ก ์ฐ๊ฒฐ๋์ด ์์ต๋๋ค.
๋น์ ์ ์ด ์ ์ ๋ค ์ค ํ๋๋ฅผ ๋์ด์ ํ์ฌ์ ์ ๋ ฅ๋ง ๋คํธ์ํฌ๋ฅผ 2๊ฐ๋ก ๋ถํ ํ๋ ค๊ณ ํฉ๋๋ค.
์ด๋, ๋ ์ ๋ ฅ๋ง์ด ๊ฐ๊ฒ ๋๋ ์ก์ ํ์ ๊ฐ์๋ฅผ ์ต๋ํ ๋น์ทํ๊ฒ ๋ง์ถ๊ณ ์ ํฉ๋๋ค.
์ก์ ํ์ ๊ฐ์ n, ๊ทธ๋ฆฌ๊ณ ์ ์ ์ ๋ณด wires๊ฐ ๋งค๊ฐ๋ณ์๋ก ์ฃผ์ด์ง๋๋ค.
์ ์ ๋ค ์ค ํ๋๋ฅผ ๋์ด์ ์ก์ ํ ๊ฐ์๊ฐ ๊ฐ๋ฅํ ๋น์ทํ๋๋ก ๋ ์ ๋ ฅ๋ง์ผ๋ก ๋๋์์ ๋, ๋ ์ ๋ ฅ๋ง์ด ๊ฐ์ง๊ณ ์๋ ์ก์ ํ ๊ฐ์์ ์ฐจ์ด(์ ๋๊ฐ)๋ฅผ return ํ๋๋ก solution ํจ์๋ฅผ ์์ฑํด์ฃผ์ธ์.
์ ํ์ฌํญ
n์ 2 ์ด์ 100 ์ดํ์ธ ์์ฐ์์ ๋๋ค.
wires๋ ๊ธธ์ด๊ฐ n-1์ธ ์ ์ํ 2์ฐจ์ ๋ฐฐ์ด์ ๋๋ค.
wires์ ๊ฐ ์์๋ [v1, v2] 2๊ฐ์ ์์ฐ์๋ก ์ด๋ฃจ์ด์ ธ ์์ผ๋ฉฐ, ์ด๋ ์ ๋ ฅ๋ง์ v1๋ฒ ์ก์ ํ๊ณผ v2๋ฒ ์ก์ ํ์ด ์ ์ ์ผ๋ก ์ฐ๊ฒฐ๋์ด ์๋ค๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค.
1 ≤ v1 < v2 ≤ n ์ ๋๋ค.
์ ๋ ฅ๋ง ๋คํธ์ํฌ๊ฐ ํ๋์ ํธ๋ฆฌ ํํ๊ฐ ์๋ ๊ฒฝ์ฐ๋ ์ ๋ ฅ์ผ๋ก ์ฃผ์ด์ง์ง ์์ต๋๋ค.
ํ์ด
1. wire ์ ๋ณด์ ๋ฐ๋ผ graph ์ธ์ ๋ฐฐ์ด์ ๊ทธ๋ํ ์ฐ๊ฒฐ ์ ๋ณด๋ฅผ ์ ์ฅํ๋ค
2. wire์ ํ๋์ฉ ๋๋ฉฐ ํด๋น ์ ์ ์ ๋๊ณ , ๋์์ ๋์ ํ์ชฝ ๋ง์ ์ก์ ํ ๊ฐฏ์๋ฅผ ๊ตฌํ๋ค (feat BFS)
3. ์ก์ ํ ๊ฐฏ์๊ฐ net์ด๋ผ๋ฉด ๋ฐ๋์ชฝ์ n-net์ด๋ฏ๋ก n-2*net์ด ๋ ์ ๋ ฅ๋ง์ ์ก์ ํ ๊ฐฏ์ ์ฐจ์ด๋ผ๊ณ ๋ณผ ์ ์๋ค (๋ฌผ๋ก ์ ๋๊ฐ ์ฐ์ฐ ํ์)
#include <string>
#include <vector>
#include <queue>
#include <algorithm>
#include <iostream>
using namespace std;
int bfs(int start, vector<vector<bool>>&graph, int&n) {
int cnt = 1;
vector<bool> visited(n+1, false);
queue<int> q;
q.push(start);
visited[start] = true;
while(!q.empty()) {
int cur = q.front();
q.pop();
for(int i=1; i<=n; i++) {
if(!visited[i] && graph[cur][i]) {
visited[i] = true;
cnt++;
q.push(i);
}
}
}
return cnt;
}
int solution(int n, vector<vector<int>> wires) {
int answer = n;
vector<vector<bool>>graph(n+1, vector<bool>(n+1,false));
vector<bool> visited(n+1, false);
for(vector<int> wire : wires) {
graph[wire[0]][wire[1]] = true;
graph[wire[1]][wire[0]] = true;
}
for(vector<int> wire : wires) {
int a = wire[0];
int b = wire[1];
graph[a][b] = graph[b][a] = false;
int net = bfs(a, graph, n);
int diff = n-2*net < 0 ? 2*net-n : n-2*net;
answer = min(answer, diff);
graph[a][b] = graph[b][a] = true;
}
return answer;
}
'๐ Cpp > [ํ๋ก๊ทธ๋๋จธ์ค] ๊ณ ๋์ Kit' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[ํ๋ก๊ทธ๋๋จธ์ค][C++] ํผ๋ก๋ (level2) (0) | 2025.01.14 |
---|---|
[ํ๋ก๊ทธ๋๋จธ์ค][C++] ๊ฐ์ฅ ํฐ ์ (level2) (0) | 2025.01.09 |
[ํ๋ก๊ทธ๋๋จธ์ค][C++] K๋ฒ์งธ์ (level1) (0) | 2025.01.05 |
[ํ๋ก๊ทธ๋๋จธ์ค][C++] ๋ ๋งต๊ฒ (level2) (2) | 2025.01.05 |
[ํ๋ก๊ทธ๋๋จธ์ค][C++] ์ฃผ์๊ฐ๊ฒฉ (level2) (0) | 2025.01.05 |