일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |
Tags
- 미래는_현재와_과거로
- 우선 순위 큐
- 회고록
- 플로이드 와샬
- 문자열
- 세그먼트 트리
- back propagation
- 백트래킹
- c++
- DP
- 분할 정복
- 조합론
- 가끔은 말로
- 2023
- BFS
- 가끔은_말로
- 자바스크립트
- object detection
- 크루스칼
- dropout
- NEXT
- 알고리즘
- tensorflow
- dfs
- pytorch
- 너비 우선 탐색
- Overfitting
- 다익스트라
- 이분 탐색
- lazy propagation
Archives
- Today
- Total
Doby's Lab
[알고리즘] 백준 15723번: n단 논법 (C++) 본문
https://www.acmicpc.net/problem/15723
15723번: n단 논법
m개의 줄에 걸쳐 각 줄에 결론이 참인지 거짓인지 출력하라. 참일 경우 T, 거짓일 경우 F를 출력하라. 알 수 없는 경우도 거짓이다. 답은 필히 대문자로 출력해야 한다.
www.acmicpc.net
이번 문제의 포인트는 플로이드 와샬과 문자열을 변환시키는 일이었다.
n단 논법에 따라 a가 b라고 해서 b는 a가 되는 것은 아님을 알고 단방향 그래프로 표현해준다.
문자열은 getline을 썼고, n이나 m을 입력받고서는 버퍼에 '\n'가 남아있기 때문에 cin.ignore()을 해준다.
#include <iostream>
#include <string>
#define MAX (26 + 1)
#define INF 987654321
using namespace std;
int graph[MAX][MAX];
int n, m;
void floydWarshall() {
for (int k = 1; k < MAX; k++) {
for (int i = 1; i < MAX; i++) {
for (int j = 1; j < MAX; j++) {
if (i == j) continue;
if (graph[i][k] == INF || graph[k][j] == INF) continue;
if (graph[i][k] + graph[k][j] < graph[i][j]) {
graph[i][j] = graph[i][k] + graph[k][j];
}
}
}
}
}
int main() {
cin >> n;
for (int i = 1; i <= 26; i++) {
for (int j = 1; j <= 26; j++) {
if (i == j) continue;
graph[i][j] = INF;
}
}
cin.ignore();
for (int i = 0; i < n; i++) {
string value;
getline(cin, value, '\n');
int s = value.front() - 96;
int e = value.back() - 96;
//cout << s << ' ' << e << '\n';
graph[s][e] = 1;
}
floydWarshall();
cin >> m;
cin.ignore();
for (int i = 0; i < m; i++) {
string value;
getline(cin, value, '\n');
int s = value.front() - 96;
int e = value.back() - 96;
if (graph[s][e] == INF) cout << 'F' << '\n';
else cout << 'T' << '\n';
}
return 0;
}
'PS > BOJ' 카테고리의 다른 글
[알고리즘] 백준 11437번: LCA (C++), 최소 공통 조상 (0) | 2021.12.13 |
---|---|
[자료구조] 백준 16975번: 수열과 쿼리 21 (C++) (0) | 2021.12.12 |
[알고리즘] 백준 10610번: 30 (C++), 3의 배수 (0) | 2021.12.11 |
[자료구조] 백준 14438번: 수열과 쿼리 17 (C++) (0) | 2021.12.11 |
[자료구조] 백준 14428번: 수열과 쿼리 16 (C++), 인덱스 세그 트리 (0) | 2021.12.11 |