๋ฌธ์ :
๋ถ์ :
์ด ๋ฌธ์ ๋ ๋ฐฐ์ด์ ๋๊ฐ๋ก ๋๋ ์ ์ธ ์๊ฐ์ ๋ชปํด์ ๋ฐฐ์ด์ ์ด๋ป๊ฒ ๋ด์์ผ ํ๋์ง ํ์ ์ ๊ดํด ๊ณ ๋ฏผ์ด ๋ง์๋ค. ์ฌ์ง์ด ๋ด๊ฐ ์ ๋ชป์ฐ๋ ์ฌ๊ทํจ์๊น์ง ์ฌ์ฉํด์ ๊ฐ ์ก๊ธฐ๊ฐ ์ด๋ ค์ ๋ค ๐
๋ฌธ์ ์์ ์ํ๋ ๊ฒ์ ๋ฌด๊ฒ๊ฐ ์ค๊ฐ์ด ๋ ์ ์๋ ๊ตฌ์ฌ์ ์๋ฅผ ์ฐพ์ผ๋ผ๊ณ ํ๋ค.
์ค๊ฐ์ด ๋ ์ ์์ผ๋ ค๋ฉด ๊ฐ๊ฐ ๋ด์ light, heavy vector์ ์ธ์ ํ ๋ ธ๋๋ค์ด ๋ง์ด ๋ด๊ฒจ ๋น๊ต๊ฐ ๋ง์ด ๋์ด์ผ ํ๋ค.
๋ฐ๋ผ์ dfs ๋ฅผ ๋๋๋ง๋ค lank ๊ฐ์ด ์ฆ๊ฐํ๊ณ ์ค๊ฐ ์ด์์ ๊ฐ์ ๊ฐ์ง ๋ ธ๋์ ๋ํด check ํจ์๋ฅผ ํตํด ์ ์ฅํด ๋๋๋ค.
๋ฌธ์ ์ ๋ป์ ํ์ ํ๋ค๋ฉด ์ ํ์ ์ธ dfs ๋ฌธ์ ๋ก ๋ณด์ผ ๋ฏ ํ๋ค.
c++ ์ฝ๋ :
//
// 2617_ใ
กmarble.cpp
// SOMA๐ฉ๐ป๐ป
//
// Created by JoSoJeong on 2021/02/11.
//
#include <stdio.h>
#include <iostream>
#include <vector>
#include <algorithm>
#include <string.h>
#include <stack>
using namespace std;
#define MAX 101
int n, N;
bool visit[2][MAX];
vector<int> light[MAX];
vector<int> heavy[MAX];
bool check[MAX];
int cnt = 0;
int find_marble_dfs(int start, vector<int> graph[MAX], int row){//row ๋ก graph == heavy, light ์ธ์ง ํ๋ณ
int Lank = 1; // ํ์ฌ ์์
for(int i = 0; i < (int)graph[start].size(); i++){
if(visit[row][graph[start][i]] == false){
visit[row][graph[start][i]] = true; // dfs ๋ ์๋ก ๋น๊ตํ ๊ตฌ์ฌ์ด ๋ง๋ค๋ ๊ฒ ๋ฐ๋ผ์ ์์ ํฌ๊ธฐ๊ฐ ์ฆ๊ฐ (ex> 1 -> 8)
Lank += find_marble_dfs(graph[start][i], graph, row);
}
}
return Lank;
}
int main(){
int n, N;
cin >> n >> N;
for(int i = 0; i< N; i++){
int m1, m2; //m1 > m2
cin >> m1 >> m2;
light[m1].push_back(m2);
heavy[m2].push_back(m1);
}
for (int i = 1; i <= n; i++) { // n = ๊ตฌ์ฌ ๋ฒํธ 1 ~ n
memset(visit, false, sizeof(visit));
visit[0][i] = visit[1][i] = true;
int h_rank = find_marble_dfs(i, heavy, 0);
int l_Lank = find_marble_dfs(i, light, 1);
if (h_rank > (n + 1) / 2 || l_Lank > (n + 1) / 2){ // ์ค๊ฐ์ด ์๋ ๊ตฌ์ฌ๋ค check
check[i] = true;
}
}
for (int i = 0; i <= n; i++){
if (check[i] == true){
cnt++; //
}
}
cout << cnt << endl;
return 0;
}
'Algorithm๐ฐ > ๋ฐฑ์ค' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ฐฑ์ค] 11000 ๊ฐ์์ค ๋ฐฐ์ priority-queue, greedy (0) | 2021.03.07 |
---|---|
[๋ฐฑ์ค] 10974 ๋ชจ๋ ์์ด ๋ฐฑํธ๋ํน (0) | 2021.02.27 |
[๋ฐฑ์ค] 2003 ์๋ค์ ํฉ2 ํฌ ํฌ์ธํฐ (2) | 2021.02.26 |
[๋ฐฑ์ค] 2667 ๋จ์ง ๋ฒํธ ๋ถ์ด๊ธฐ BFS (0) | 2021.02.19 |
[๋ฐฑ์ค] 18870 ์ขํ ์์ถ (0) | 2021.02.19 |
๋๊ธ