티스토리 뷰
https://www.acmicpc.net/problem/15789
일단 한솔 왕국이 포함된 동맹국들을 제외하고 CTP 왕국을 포함한 동맹국들과 나머지 동맹국 덩어리 중에 가장 큰 K개를 포함시킨다. DFS를 이용했다.
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 | #include <cstdio> #include <vector> #include <algorithm> using namespace std; int n,m,x,y,c,h,k,l,v[100001],cnt,ans; vector<int> a[100001],b; void dfs(int x) { v[x]=1,cnt++; for(auto i : a[x]) if(!v[i]) dfs(i); } int main() { scanf("%d %d",&n,&m); while(m--) { scanf("%d %d",&x,&y); a[x].push_back(y); a[y].push_back(x); } scanf("%d %d %d",&c,&h,&k); dfs(c),ans+=cnt,dfs(h); for(int i=1;i<=n;i++) if(!v[i]) cnt=0,dfs(i),b.push_back(cnt); sort(b.begin(),b.end()); l=b.size(); for(int i=l-1;i>l-1-k;i--) ans+=b[i]; printf("%d",ans); return 0; } | cs |
'Algorithm > BOJ' 카테고리의 다른 글
9375 패션왕 신해빈 (0) | 2018.07.04 |
---|---|
9009 피보나치 (0) | 2018.07.03 |
2688 줄어들지 않아 (0) | 2018.06.08 |
11497 통나무 건너뛰기 (0) | 2018.06.07 |
10219 Meats On The Grill (0) | 2018.06.07 |