본문 바로가기

BOJ

(179)
[BOJ] 2150번 Strongly Connected Component (C++) https://www.acmicpc.net/problem/2150 2150번: Strongly Connected Component 첫째 줄에 두 정수 V(1 ≤ V ≤ 10,000), E(1 ≤ E ≤ 100,000)가 주어진다. 이는 그래프가 V개의 정점과 E개의 간선으로 이루어져 있다는 의미이다. 다음 E개의 줄에는 간선에 대한 정보를 나타내는 두 정 www.acmicpc.net #include #include #include #include #define MAX 10001 using namespace std; int v, e, id; vector a[MAX]; int d[MAX]; bool finished[MAX]; stack s; int sccNum; vector SCC; int dfs(int c..
[BOJ] 4386번 별자리 만들기 (C++) https://www.acmicpc.net/problem/4386 4386번: 별자리 만들기 도현이는 우주의 신이다. 이제 도현이는 아무렇게나 널브러져 있는 n개의 별들을 이어서 별자리를 하나 만들 것이다. 별자리의 조건은 다음과 같다. 별자리를 이루는 선은 서로 다른 두 별을 일 www.acmicpc.net #include #include #include #include using namespace std; int n; int parent[101]; vector star; vector v; int getParent(int a){ if(a == parent[a]) return a; return getParent(parent[a]); } void unionParent(int a, int b){ a = ge..
[BOJ] 2468번 안전 영역 (C++) https://www.acmicpc.net/problem/2468 2468번: 안전 영역 재난방재청에서는 많은 비가 내리는 장마철에 대비해서 다음과 같은 일을 계획하고 있다. 먼저 어떤 지역의 높이 정보를 파악한다. 그 다음에 그 지역에 많은 비가 내렸을 때 물에 잠기지 않는 www.acmicpc.net #include #include #include #include using namespace std; int n, cnt; int arr[101][101]; int fixedarr[101][101]; bool visited[101][101]; int dx[4] = { -1, 0, 0, 1 }; int dy[4] = { 0, -1, 1, 0 }; void bfs(int a, int b) { queue q;..
[BOJ] 20040번 사이클 게임 (C++) https://www.acmicpc.net/problem/20040 20040번: 사이클 게임 사이클 게임은 두 명의 플레이어가 차례대로 돌아가며 진행하는 게임으로, 선 플레이어가 홀수 번째 차례를, 후 플레이어가 짝수 번째 차례를 진행한다. 게임 시작 시 0 부터 n − 1 까지 고유한 www.acmicpc.net #include using namespace std; int n, m; int parent[500001]; int getParent(int a){ if(a == parent[a]) return a; return parent[a] = getParent(parent[a]); } void unionParent(int a, int b){ a = getParent(a); b = getParent(b)..
[BOJ] 1197번 최소 스패닝 트리 (C++) https://www.acmicpc.net/problem/1197 1197번: 최소 스패닝 트리 첫째 줄에 정점의 개수 V(1 ≤ V ≤ 10,000)와 간선의 개수 E(1 ≤ E ≤ 100,000)가 주어진다. 다음 E개의 줄에는 각 간선에 대한 정보를 나타내는 세 정수 A, B, C가 주어진다. 이는 A번 정점과 B번 정점이 www.acmicpc.net #include #include #include using namespace std; int v, e; int parent[10001]; int getParent(int x){ if(parent[x] == x) return x; return parent[x] = getParent(parent[x]); } void unionParent(int a, in..
[BOJ] 1717번 집합의 표현 (C++) https://www.acmicpc.net/problem/1717 1717번: 집합의 표현 첫째 줄에 n(1 ≤ n ≤ 1,000,000), m(1 ≤ m ≤ 100,000)이 주어진다. m은 입력으로 주어지는 연산의 개수이다. 다음 m개의 줄에는 각각의 연산이 주어진다. 합집합은 0 a b의 형태로 입력이 주어진다. 이는 www.acmicpc.net #include using namespace std; int n, m; int parent[1000001]; int getParent(int x){ if(parent[x] == x) return x; return parent[x] = getParent(parent[x]); } void unionParent(int a, int b){ a = getParent..
[BOJ] 21940번 가운데에서 만나기 (C++) https://www.acmicpc.net/problem/21940 21940번: 가운데에서 만나기 위 조건을 만족하는 도시 $X$의 번호를 출력한다. 만약 가능한 도시 $X$가 여러 개인 경우는 도시의 번호를 오름차순으로 출력한다. www.acmicpc.net #include #include #define INF 987654321 using namespace std; int graph[201][201]; int main() { ios::sync_with_stdio(false); cin.tie(NULL); int n, m; cin >> n >> m; for(int i = 1; i a >> b >> t; graph[a][b] = t; } for(int k = 1; k > c; v.push_back(c); ..
[BOJ] 10026번 적록색약 (C++) https://www.acmicpc.net/problem/10026 10026번: 적록색약 적록색약은 빨간색과 초록색의 차이를 거의 느끼지 못한다. 따라서, 적록색약인 사람이 보는 그림은 아닌 사람이 보는 그림과는 좀 다를 수 있다. 크기가 N×N인 그리드의 각 칸에 R(빨강), G(초록) www.acmicpc.net #include #include #include using namespace std; int n; char arr[100][100]; bool visited[100][100]; int dx[4] = { -1, 0, 0, 1 }; int dy[4] = { 0, -1, 1, 0 }; void bfs(int a, int b){ queue q; q.push({a, b}); visited[a][b]..