반응형

 

 

<코드>

#include<iostream>
#include<algorithm>
#include<string>
using namespace std;

string s;
int n, m, u, v;
int parent[26];
bool flag;

int main()
{
	ios_base::sync_with_stdio(0);
	cin.tie(0);

	cin >> n;

	for (int i = 0; i < n; i++)
	{
		cin >> s;
		u = s[0] - 'a';
		cin >> s;
		cin >> s;
		v = s[0] - 'a';

		parent[u] = v;
	}

	cin >> m;

	for (int i = 0; i < m; i++)
	{
		cin >> s;
		u = s[0] - 'a';
		cin >> s;
		cin >> s;
		v = s[0] - 'a';

		// u와 v가 같지않고 u의 부모노드가 존재할 때
		while (u != v && parent[u]) 
			u = parent[u];

		cout << (u == v ? "T" : "F") << '\n';
	}
}

 

 

<플로이드 와샬 코드>

#include<iostream>
#include<algorithm>
#include<string>
using namespace std;

string s;
int n, m, u, v;
bool arr[26][26];

int main()
{
	ios_base::sync_with_stdio(0);
	cin.tie(0);

	cin >> n;
	for (int i = 0; i < n; i++)
	{
		cin >> s;
		u = s[0] - 'a';
		cin >> s;
		cin >> s;
		v = s[0] - 'a';
		arr[u][v] = true;
	}

	// 플로이드 와샬
	for (int k = 0; k < 26; k++) // 거쳐가는 노드
		for (int i = 0; i < 26; i++) // 출발 노드
			for (int j = 0; j < 26; j++) // 도착 노드
				if (arr[i][k] == true && arr[k][j] == true)
					arr[i][j] = true;
	cin >> m;

	for (int i = 0; i < m; i++)
	{
		cin >> s;
		u = s[0] - 'a';
		cin >> s;
		cin >> s;
		v = s[0] - 'a';

		cout << (arr[u][v] ? "T" : "F") << '\n';
	}
}

 

 

 

www.acmicpc.net/problem/15723

 

15723번: n단 논법

m개의 줄에 걸쳐 각 줄에 결론이 참인지 거짓인지 출력하라. 참일 경우 T, 거짓일 경우 F를 출력하라. 알 수 없는 경우도 거짓이다. 답은 필히 대문자로 출력해야 한다.

www.acmicpc.net

 

반응형

+ Recent posts