티스토리 뷰
https://www.acmicpc.net/problem/14676
14676번: 영우는 사기꾼?
프로그램의 입력은 표준 입력으로 받는다. 입력의 첫 줄에는 건물 종류의 개수 N, 건물 사이 관계의 개수 M, 영우의 게임 정보의 개수 K가 주어진다.(1 ≤ N, M, K ≤ 100,000) 다음 줄부터 M줄에 걸쳐
www.acmicpc.net
위상정렬 알고리즘을 응용해서 풀이했습니다.
C++ 소스 코드
#include <iostream>
#include <vector>
#define MAX 100001
using namespace std;
int n,m,k;
vector<int> adj[MAX];
int inDegree[MAX], construct[MAX];
int main(){
ios_base::sync_with_stdio(0);
cin.tie(0); cout.tie(0);
cin >> n >> m >> k;
int u,v;
for(int i=0;i<m;i++){
cin >> u >> v;
adj[u].push_back(v);
inDegree[v]++;
}
int op,a;
bool pass = true;
for(int i=0;i<k;i++){
cin >> op >> a;
if (op == 1){ // 만들기
if(inDegree[a]==0) { // 만들 수 있음
construct[a]++;
if(construct[a]==1){ // 처음 만든 정점일때
for(int t = 0; t< adj[a].size();t++){
inDegree[adj[a][t]]--;
}
}
}else {
pass= false;
}
}else { //삭제하기
if(construct[a] > 0){ //삭제할 수 있음
construct[a]--;
if(construct[a]==0){ // 모든 a를 삭제했을 때
for(int t = 0; t< adj[a].size();t++){
inDegree[adj[a][t]]++;
}
}
}else {
pass= false;
}
}
}
if(pass){
cout << "King-God-Emperor" <<'\n';
}else{
cout << "Lier!" << '\n';
}
return 0;
}'Algorithm > 알고리즘 문제풀이' 카테고리의 다른 글
| BOJ) 4485 - 녹색 옷 입은 애가 젤다지? (0) | 2020.12.16 |
|---|---|
| BOJ) 1065 - 한수 (0) | 2020.12.02 |
| BOJ) 1325 - 효율적인 해킹 (0) | 2020.11.23 |
| BOJ) 11728 - 배열 합치기 (0) | 2020.11.15 |
| BOJ) 1766 - 문제집 (0) | 2020.11.11 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- ARKit
- DispatchQueue
- Kotlin
- Swift
- rxswift6
- 백준온라인저지
- Reactivex
- disposeBag
- blendshape
- infallible
- cocoapods
- SWEA
- 안드로이드
- 코코아팟
- Swift unowned
- 백준
- 알고리즘
- boj
- C++
- Swift weak
- blendshapes
- ios
- 카카오인턴십
- coreml
- Lottie
- rxswift
- 프로그래머스
- UIHostingController
- GraphDB
- 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 |
글 보관함