티스토리 뷰
https://www.acmicpc.net/problem/10775
큰 번호의 게이트부터 도킹해야 최대한 많은 비행기를 도킹할 수 있다. 파인드 연산을 통해 이미 도킹했다면 앞의 게이트와 연결 시켜서 다음 도킹할 자리를 빨리 찾을 수 있다. 파인드 연산 결과가 0이라면 더 이상 도킹할 자리가 없으므로 종료 시켜주면 된다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | #include <cstdio> int n,m,t,c,r,p[100001]; int Find(int x) { return x==p[x]?x:p[x]=Find(p[x]); } int main() { scanf("%d %d",&n,&m); for(int i=1;i<=n;i++) p[i]=i; while(m--) { scanf("%d",&t); r=Find(t); if(r!=0) p[r]=r-1,c++; else break; } printf("%d",c); return 0; } | cs |
'Algorithm > BOJ' 카테고리의 다른 글
1516 게임 개발 (0) | 2018.02.18 |
---|---|
9657 돌 게임 3 (0) | 2018.02.14 |
1761 정점들의 거리 (0) | 2018.02.12 |
11437 LCA (0) | 2018.02.12 |
1915 가장 큰 정사각형 (0) | 2018.02.12 |