[문제]
https://www.acmicpc.net/problem/1613
[풀이]
저울 문제와 같은 유형이다.
중간 인덱스 k에 대해서 i가 k보다 먼저 발생한 사건이고, k가 j보다 먼저 발생한 사건이면 i가 j보다 먼저 발생한 사건임을 알 수 있다.
[코드]
#include <iostream>
#include <algorithm>
#include <vector>
#include <queue>
#include <cstring>
#include <cmath>
#include <stack>
#define INF 987654321
using namespace std;
int n, k, s;
int check[401][401];
int main() {
ios::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
cin >> n >> k;
for(int i=0; i<k; i++){
int s, e;
cin >> s >> e;
check[s][e] = 1; //s가 e보다 먼저 발생
}
for(int k=1; k<=n; k++){
for(int i=1; i<=n; i++){
for(int j=1; j<=n; j++){
if(check[i][k] && check[k][j]){
check[i][j] = 1;
}
}
}
}
cin >> s;
for(int i=0; i<s; i++){
int a, b;
cin >> a >> b;
if(check[a][b]==1)
cout << "-1\n";
else if(check[b][a]==1)
cout << "1\n";
else cout << "0\n";
}
}
'알고리즘 공부 및 문제 풀이 > 백준(BOJ)' 카테고리의 다른 글
[boj] 백준 14442 벽 부수고 이동하기 2 (c++) - BFS (0) | 2022.12.02 |
---|---|
[boj] 백준 20057 마법사 상어와 토네이도 (c++) - 시뮬레이션 (0) | 2022.11.30 |
[boj] 백준 2473 세 용액 (c++) - 투 포인터 (0) | 2022.11.24 |
[boj] 백준 10986 나머지 합 (c++) (0) | 2022.11.23 |
[boj] 백준 2629 양팔저울 (c++) - dp, 재귀 (1) | 2022.11.22 |