https://www.acmicpc.net/problem/21316

12개 간선이 입력으로 주어지고, 어떤 입력이든 이 모양으로 주어진다고 합니다.
여기서 Spica가 되는 정점의 조건은 주변 정점들과 간선들로 알아낼 수 있습니다.
저는 Spica에 인접한 정점들은 각각 1, 2, 3개의 간선이 있다는 것을 파악했고, 그대로 구현했습니다.
1, 2, 3개는 각각 비트마스킹을 활용했습니다.
| 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 | #include <iostream> #include <vector> #define MAX 13 using namespace std; vector<int> v[MAX]; void func() {     for (int i = 1; i < MAX; i++) {         int flag = 0;         for (auto next : v[i]) {             flag |= (1 << (v[next].size() - 1));         }         if (flag == 7) {             cout << i << '\n';             return;         }     } } void input() {     int x, y;     for (int i = 1; i < MAX; i++) {         cin >> x >> y;         v[x].push_back(y);         v[y].push_back(x);     } } int main() {     cin.tie(NULL); cout.tie(NULL);     ios::sync_with_stdio(false);     input();     func();     return 0; } | cs | 
'algorithm > ad-hoc' 카테고리의 다른 글
| boj 24553 팰린드롬 게임 (0) | 2024.08.07 | 
|---|---|
| boj 14370 전화번호 수수께끼 (Large) (0) | 2024.08.06 | 
| boj 10350 Banks (0) | 2024.07.31 | 
| boj 5527 전구 장식 (0) | 2024.07.30 | 
| boj 14864 줄서기 (0) | 2024.07.26 |