Recent Posts
Recent Comments
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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
- 위상정렬
- MST
- 백트레킹
- 캘리그라피
- BOJ 2098
- lower_bound
- 그리디 알고리즘
- boj
- 다음 지도 api
- 외판원 순회
- 이분탐색
- BFS
- 성화봉송
- DP
- 영어회화 100일의 기적
- multiset
- 안드로이드 스튜디오
- 비트마스크
- 평창동계올림픽
- 삼성 코딩테스트
- upper_bound
- 다음 API
- 생활코딩
- 창훈쓰다
- Segment Tree
- 인간이 그리는 무늬
- yolo
- 다이나믹 프로그래밍
- 언어의 온도
- 성화봉송주자
Archives
- Today
- Total
Hoon222y
[BOJ 1613] 역사 본문
https://www.acmicpc.net/problem/1613
일의 우선순위를 물어보는 역사시간 문제이다 ㅋㅋ 처음 문제를 보고 접근방법으로 위상정렬로 하려고 했는데 .... 이게 왠건 플로이드 워셜이네 ....
(어떤부분을 보고 플로이드 워셜로 접근하는 사람들이 있는지 궁금하긴 하다)
일단 플로이드로 구현하게 된다면 각각의 가중치를 두고 플로이드를 돌린 후 일정 조건에 따라 다르게 출력해주면 된다.
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 32 33 34 35 36 37 38 39 | #include <iostream> #include <cstdio> #include <cstring> #define INF 1000000000 using namespace std; int n,m,arr[411][411],t; int a,b; int main(){ scanf("%d%d" , &n,&m); for(int i=1;i<=n;i++){ for(int j=1;j<=n;j++){ arr[i][j] = INF; } } for(int i=1;i<=m;i++){ scanf("%d%d" , &a,&b); arr[a][b] = 1; } for(int k=1;k<=n;k++){ for(int i=1;i<=n;i++){ for(int j=1;j<=n;j++){ arr[i][j] = min(arr[i][j] , arr[i][k]+arr[k][j]); } } } scanf("%d" , &t); while(t--){ scanf("%d%d" , &a,&b); if(arr[a][b] == INF && arr[b][a] == INF){ printf("0\n"); }else if(arr[a][b] != INF&& arr[a][b] > 0){ printf("-1\n"); }else { printf("1\n"); } } return 0; } | cs |
'코딩 > BOJ & 알고스팟' 카테고리의 다른 글
[BOJ 13460] 째로탈출2 (0) | 2017.04.11 |
---|---|
[BOJ 2206] 벽 부수고 이동하기 (1) | 2017.04.07 |
[BOJ 1201] NMK (1) | 2017.03.06 |
[BOJ 2293,2294] 동전 1,2 (0) | 2017.03.04 |
[BOJ 1509] 팰린드롬 분할 (3) | 2017.03.04 |
Comments