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