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
- 외판원 순회
- yolo
- DP
- 백트레킹
- MST
- 다음 지도 api
- 삼성 코딩테스트
- 위상정렬
- 영어회화 100일의 기적
- BOJ 2098
- 생활코딩
- 언어의 온도
- 안드로이드 스튜디오
- upper_bound
- BFS
- Segment Tree
- 이분탐색
- 인간이 그리는 무늬
- 다음 API
- lower_bound
- 창훈쓰다
- 성화봉송
- 그리디 알고리즘
- 다이나믹 프로그래밍
- multiset
- 평창동계올림픽
- 비트마스크
- 성화봉송주자
- boj
- 캘리그라피
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