PS (C, C++)
[백준/C++] 15723 n단 논법
최연재
2024. 11. 11. 21:30
https://www.acmicpc.net/problem/15723
코드
#include <iostream>
#include <string>
using namespace std;
#define FASTIO ios::sync_with_stdio(false); cin.tie(NULL);
int n, m, parent[27];
int main() {
FASTIO;
fill(parent, parent + 27, -1);
cin >> n;
string a, tmp, b;
for (int i = 0; i < n; i++) {
cin >> a >> tmp >> b;
parent[a[0] - 'a'] = b[0] - 'a';
}
cin >> m;
for (int i = 0, s, e; i < m; i++) {
cin >> a >> tmp >> b;
s = a[0] - 'a', e = b[0] - 'a';
while (s != e && parent[s] != -1)
s = parent[s];
if (s == e) cout << "T\n";
else cout << "F\n";
}
return 0;
}
설명
a is b 관계는 a에서 b로 갈 수 있음을 의미하니 이를 parent 배열에 기록합니다. m개의 결론을 받으면 a에서 출발해서 b로 도착할 수 있는지를 반복문으로 확인한 후에 최종 결과에 따라 T 혹은 F를 출력하면 됩니다.
느낀 점
parent 배열 초기화와 관련해서 한 번 틀렸었습니다. 관련 코드를 추가한 후 제출하니 맞았습니다.