티스토리 뷰
https://www.acmicpc.net/problem/2252
2252번: 줄 세우기
첫째 줄에 N(1≤N≤32,000), M(1≤M≤100,000)이 주어진다. M은 키를 비교한 회수이다. 다음 M개의 줄에는 키를 비교한 두 학생의 번호 A, B가 주어진다. 이는 학생 A가 학생 B의 앞에 서야 한다는 의미이��
www.acmicpc.net
Queue를 이용한 위상정렬 알고리즘으로 풀이하였습니다.
C++ 소스 코드
#include <cstdio>
#include <vector>
#include <queue>
using namespace std;
int n,m;
int inDegree[32002];
int res[32002];
vector<int> a[32001];
int main(){
scanf("%d %d", &n, &m);
for(int i=0;i<m;i++){
int u,v;
scanf("%d %d", &u ,&v);
a[u].push_back(v);
inDegree[v]++;
}
queue<int> q;
for(int i=1;i<=n;i++){
if(inDegree[i]==0) q.push(i);
}
for(int i=0;i<n;i++){
int now = q.front();
q.pop();
res[i]=now;
for(int j=0;j<a[now].size();j++){
if(--inDegree[a[now][j]]==0) q.push(a[now][j]);
}
}
for(int i=0;i<n;i++){
printf("%d ", res[i]);
}
return 0;
}
'Algorithm > 알고리즘 문제풀이' 카테고리의 다른 글
BOJ) 16973 - 직사각형 탈출 (0) | 2020.07.09 |
---|---|
프로그래머스) Lv1 - 체육복 (0) | 2020.07.09 |
BOJ) 16918 - 봄버맨 (0) | 2020.07.07 |
BOJ) 16920 - 확장 게임 (0) | 2020.07.07 |
프로그래머스) Lv3 - 경주로 건설 [2020 카카오 인턴십] (0) | 2020.07.05 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 백준
- Reactivex
- DispatchQueue
- ios
- boj
- 코코아팟
- 안드로이드
- Swift weak
- disposeBag
- blendshape
- blendshapes
- infallible
- coreml
- Swift
- SWEA
- Swift unowned
- C++
- 백준온라인저지
- cocoapods
- rxswift6
- 프로그래머스
- GraphDB
- 카카오인턴십
- 알고리즘
- Kotlin
- ARKit
- UIHostingController
- Lottie
- rxswift
- SwiftUI
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함