반응형
✏️ 문제 링크
https://www.acmicpc.net/problem/1766
✏️ 문제 설명 (더보기 클릭 👆🏻)
✏️ 문제 풀이
기본적으로 위상정렬 문제인데! + min heap이 합쳐진 문제이다.
먼저 풀어야 하는 문제를 풀고 queue에 넣을 때에 더 쉬운 문제들 부터 풀어야하니, queue안에서 가장 쉬운 문제들로 정렬이 되어야 하기 때문에 priority_queue를 사용해서 문제를 풀 수 있다!
✏️ 문제 코드
#include <bits/stdc++.h>
using namespace std;
#define MAX 32001
vector<int> entry(MAX, 0);
vector<int> vec[MAX];
int main(){
int N, M; cin>>N>>M;
while(M--){
int a,b; cin>>a>>b;
entry[b]++;
vec[a].push_back(b);
}
priority_queue<int> pq;
for(int i=1; i<=N; i++){
if(entry[i]==0) pq.push(-i);
}
while(!pq.empty()){
int t=-pq.top(); pq.pop();
cout<<t<<" ";
for(int i=0; i<vec[t].size(); i++){
int nxt=vec[t][i];
entry[nxt]--;
if(entry[nxt]==0) pq.push(-nxt);
}
}
return 0;
}
⭐ if feedback and question : comment please⭐
반응형
'Algorithm 💫 > Problem Solving' 카테고리의 다른 글
[백준] 1516번: 게임 개발 / C++ (0) | 2021.10.04 |
---|---|
[백준] 2056번: 작업 / C++ (0) | 2021.10.04 |
[백준] 2252번: 줄 세우기 / C++ (0) | 2021.10.03 |
[백준] 1005번: ACM craft / C++ (0) | 2021.10.03 |
[백준] 1890번: 점프 / C++ (0) | 2021.10.02 |
댓글