PS

BOJ 23255 : 구름다리 2

lickelon 2024. 5. 16. 22:26
  • 문제 링크 : boj.kr/23255
  • 난이도 : G4
  • 태그 : 그리디

코드

#include <bits/stdc++.h>

#define all(x) (x).begin(), (x).end()

#define INF 0x7FFFFFFF

using namespace std;

using ll = long long;
using ld = long double;
using pii = pair<int,int>;
using pll = pair<ll, ll>;

int main()
{
    ios::sync_with_stdio(0);
    cin.tie(0); cout.tie(0);

    int n, m;
    cin >> n >> m;
    vector<int> arr(n+1, 0);
    vector<vector<int>> edge(n+1);
    for(int i = 0; i < m; i++) {
        int a, b;
        cin >> a >> b;
        edge[a].emplace_back(b);
        edge[b].emplace_back(a);
    }

    for(int i = 1; i <= n; i++) {
        set<int> _s;
        for(auto u : edge[i]) {
            _s.insert(arr[u]);
        }
        for(int j = 1; j <= n; j++) {
            if(_s.find(j) == _s.end()) {
                arr[i] = j;
                break;
            }
        }
        cout << arr[i] << " ";
    }

    return 0;
}

풀이

낮은 번호의 건물부터 시작해서, 연결되어 있는 건물의 색에 포함되지 않은 가장 작은 수의 색을 칠하면 된다.

'PS' 카테고리의 다른 글

BOJ 29792 : 규칙적인 보스돌이  (0) 2024.05.18
BOJ 14370 : 전화번호 수수께끼 (Large)  (0) 2024.05.17
BOJ 2616 : 소형기관차  (1) 2024.05.15
BOJ 31233 : 관광 상품  (0) 2024.05.14
BOJ 17073 : 나무 위의 빗물  (0) 2024.05.13