굉장히 간단한 문제를 조건하나를 빠트려서 계속 헛다리 짚은 문제이다...
( 내시간... )
n번 게이트에 도킹 되면 가장 인접하면서 낮은 번호의 게이트로 도킹이 되고, 연결해야할 게이트가
0번 밖에 남지 않았다고 한다면 마쳐주면된다.
도킹 게이트가 0임을 포착한 순간 바로 입력하던 반복문도 빠져나오고 현 게이트 수를 출력하고 종료시켜줘야한다.
(이거때매 30분넘게 해맸다...)
https://www.acmicpc.net/problem/10775
<CODE>
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 40 | //pda_pro12 #include<iostream> #define N_ 100001 using namespace std; int g, p, par[N_], inp, cnt; void init() { for (int i = 1; i <= g; i++) par[i] = i; return; } int find(int x) { if (x == par[x]) return x; return par[x] = find(par[x]); } int main() { ios::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); cin >> g >> p; init(); for (int i = 1; i <= p; i++) { cin >> inp; if (find(inp) == 0) { break; } if (find(inp)) { // 내가 도킹하려는 곳이 가능한지 확인 cnt++; par[find(inp)] = find(find(inp) - 1); } } cout << cnt << '\n'; return 0; } |
'PS) BOJ > Disjoint_set' 카테고리의 다른 글
[C++]미로 만들기 [BOJ 2665] (0) | 2018.08.21 |
---|---|
[C++] 네트워크 연결 [백준 3780] (0) | 2018.08.17 |