Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 기울기 소실
- 이진분류
- union-find
- 계단 함수
- 순방향 신경망
- 딥러닝
- 다익스트라
- DP
- deep learning
- OpenGL
- 백준
- bfs
- feedforward neural network
- 동적계획법
- 알고리즘
- 이진 분류
- BOJ
- Perceptron
- c++
- 베르누이 분포
- dl
- 과대적합
- dijkstra
- 범용 근사 정리
- vanishing gradient
- 단층 퍼셉트론
- 경사하강법
- 베버의 법칙
- 3d
- 손실 함수
Archives
- Today
- Total
Hello COCOBALL!
C++ [BOJ] 백준 2458번 키 순서 (플로이드 와샬 알고리즘) 본문
https://www.acmicpc.net/problem/2458
2458번: 키 순서
1번부터 N번까지 번호가 붙여져 있는 학생들에 대하여 두 학생끼리 키를 비교한 결과의 일부가 주어져 있다. 단, N명의 학생들의 키는 모두 다르다고 가정한다. 예를 들어, 6명의 학생들에 대하여
www.acmicpc.net
SOLUTION
플로이드 와샬 알고리즘 문제.
arr배열을 INF로 초기화 하고, 초기 입력을 받아 해당하는 배열 위치의 값을 1로 바꾼다.
입력을 받은 후 플로이드 와샬 알고리즘으로 추가로 비교가 가능한 학생이 있는지 찾아 1로 바꿔준다.
arr[i][j], arr[j][i]가 모두 0인 경우에는 키 비교가 불가능 하기 때문에 답에서 제외된다.
자기 자신을 제외하고, 모든 정점에 대해 비교가 가능한 학생이 자신의 키가 몇 번째인지 알 수 있는 학생이 된다.(모든 정점이 연결되어야함)
코드
#include <iostream>
#define INF 123456789
using namespace std;
int arr[501][501];
int main() {
int n, m;
cin >> n >> m;
fill(&arr[0][0], &arr[500][501], INF);
while (m--) {
int a, b;
cin >> 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++) {
if (arr[i][k] == 1 && arr[k][j] == 1) arr[i][j] = 1;
}
}
}
int ans = 0;
for (int i = 1;i <= n;i++) {
int count = 0;
for (int j = 1;j <= n;j++) {
if (arr[i][j] == 1 || arr[j][i] == 1) count++;
}
if (count == n - 1) ans++;
}
cout << ans;
}
'BOJ' 카테고리의 다른 글
C++ [BOJ] 백준 13424번 비밀 모임 (1) | 2022.07.02 |
---|---|
C++ [BOJ] 백준 1700번 멀티탭 스케줄링 (0) | 2022.06.29 |
C++ [BOJ] 백준 1874번 스택 수열 (0) | 2022.06.23 |
C++ [BOJ] 백준 10814번 나이순 정렬 (0) | 2022.06.23 |
C++ [BOJ] 백준 2309번 일곱 난쟁이 (2) | 2022.06.21 |