맛있는감귤

BOJ : 1953 팀 배분 본문

알고리즘/백준 알고리즘

BOJ : 1953 팀 배분

맛있는감귤 2017. 4. 28. 02:03

문제 : https://www.acmicpc.net/problem/1953

BFS를 이런식으로도 활용할 수 있구나 했던 문제

한명만 싫어하는 경우는 없기 때문에 A가 B를 싫어한다면 둘이 서로 다른 팀에만 배정하면 된다.

블루 화이트 상관없이 아무데나 넣어버리자.

flag를 순서대로 이용하여 섞이지 않도록 함.

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
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
#include <cstdio>
#include <vector>
#include <queue>
using namespace std;
 
int N;
bool visited[102];
vector<int> v[102];
queue<int> q;
priority_queue<int> blue, white;
int main(){
    scanf("%d",&N);
    for(int i=1,n,m;i<=N;i++){
        scanf("%d",&n);
        while(n--){
            scanf("%d",&m);
            v[i].push_back(m);
            v[m].push_back(i);
        }
    }
    
    for(int i=1;i<=N;i++){
        bool flag = 0;
        
        if(!visited[i]){
            visited[i]=1;
            q.push(i);
            if(flag) blue.push(-i);
            else white.push(-i);
        }
        
        
        while(!q.empty()){
            int sz = q.size();
            if(flag) flag = 0;
            else flag = 1;
            while(sz--){
                int n = q.front();
                q.pop();
                
                for(auto &l : v[n]){
                    if(visited[l]) continue;
                    visited[l]=1;
                    q.push(l);
                    if(flag) blue.push(-l);
                    else white.push(-l);
                }
            }
            
        }
    }
    int b=blue.size(), w=white.size();
    printf("%d\n",b);
    for(int i=0;i<b;i++){
        if(i==b-1printf("%d\n",-blue.top());
        else printf("%d ",-blue.top());
        blue.pop();
    }
    printf("%d\n",w);
    for(int i=0;i<w;i++){
        if(i==w-1printf("%d\n",-white.top());
        else printf("%d ",-white.top());
        white.pop();
    }
}
cs

'알고리즘 > 백준 알고리즘' 카테고리의 다른 글

BOJ : 1120 문자열  (0) 2017.04.28
BOJ : 1526 가장 큰 금민수  (0) 2017.04.28
BOJ : 3197 백조의 호수 (테스트 케이스 첨부)  (0) 2017.04.28
BOJ : 5567 결혼식  (0) 2017.04.28
BOJ : 13458 시험감독  (0) 2017.04.28