기술 블로그

2026번 소풍 본문

알고리즘 문제/BOJ

2026번 소풍

parkit 2019. 1. 5. 23:10
728x90
반응형

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


알고스팟 소풍 : http://hsdevelopment.tistory.com/202


알고스팟의 소풍 문제를 살짝 바꾼 문제이다.




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
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
#include <iostream>
#include <queue>
#include <stack>
#include <cstdio>
#include <vector>
#include <cstring>
#include <string>
#include <math.h>
#include <algorithm>
#include <map>
 
using namespace std;
 
// 총 N명의 학생 중, K명을 소풍 보내려고 한다.
 
int K = 0, N = 0, F = 0;
 
bool Friends[901][901];
 
bool student[901= { false, };
 
bool visit[901= { false, };
 
bool stop = false;
 
vector<int> v;
 
int start = 0;
 
void backtracking(int start)
{
    if (stop) return;
 
    visit[start] = true// 아래 if문보다 먼저
    v.push_back(start); // 아래 if문보다 먼저
 
    if (K == v.size())
    {
        stop = true;
 
        for (auto i : v) printf("%d\n", i);
 
        return;
    }
 
    for (int i = start + 1; i <= N; i++)
    {
        if (visit[i]) continue;
 
        bool isFriend = true;
 
        for (auto next : v)
        {
            if (!Friends[i][next])
            {
                isFriend = false;
                break;
            }
        }
 
        if (isFriend) backtracking(i);
    }
}
 
int main(void)
{
    int s = 0, e = 0;
 
    scanf("%d %d %d"&K, &N, &F);
 
    for (int i = 0; i < F; i++)
    {
        scanf("%d %d"&s, &e);
 
        Friends[s][e] = true;
        Friends[e][s] = true;
    }
 
    for (int i = 1; i <= N; i++)
    {
        memset(visit, falsesizeof(visit));
 
        if (!v.empty()) v.clear();
 
        backtracking(i);
 
        if (stop) break;
    }
 
    if (!stop) printf("-1\n");
 
    return 0;
}
cs


728x90
반응형

'알고리즘 문제 > BOJ' 카테고리의 다른 글

1799번 비숍  (0) 2019.01.07
1074번 Z  (0) 2019.01.06
8979번 올림픽  (0) 2019.01.05
1789번 수들의 합  (0) 2019.01.05
11653번 소인수분해  (0) 2019.01.04