티스토리 뷰

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
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday