일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 가끔은 말로
- Overfitting
- NEXT
- 알고리즘
- 분할 정복
- 문자열
- 다익스트라
- dropout
- 이분 탐색
- 백트래킹
- tensorflow
- lazy propagation
- BFS
- 세그먼트 트리
- 우선 순위 큐
- DP
- dfs
- pytorch
- 가끔은_말로
- 회고록
- 미래는_현재와_과거로
- 플로이드 와샬
- 자바스크립트
- 조합론
- object detection
- c++
- back propagation
- 2023
- 크루스칼
- 너비 우선 탐색
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 |