Henu
개발냥발
Henu
전체 방문자
오늘
어제
  • 분류 전체보기 (411)
    • DevOps (52)
      • Kubernetes (19)
      • Docker (14)
      • AWS (3)
      • Nginx (4)
      • Linux (4)
      • ArgoCD (1)
      • CN (2)
      • NATS (0)
      • Git (5)
    • Back-End (30)
      • Django (18)
      • Spring (5)
      • JPA (1)
      • MSA (5)
    • CS (87)
      • SystemSoftware (20)
      • OS (25)
      • Computer Architecture (16)
      • Network (23)
      • Database (2)
    • Lang (21)
      • Java (9)
      • Python (4)
      • C# (8)
    • Life (12)
    • 블록체인 (2)
    • Algorithm (204)
      • BOJ (160)
      • 프로그래머스 (19)
      • LeetCode (4)
      • SWEA (1)
      • 알고리즘 문제 해결 전략 (8)
      • DS, algorithms (7)
      • Checkio (5)
    • IT (2)

블로그 메뉴

  • GitHub
  • 글쓰기
  • 관리자

공지사항

  • Free!

인기 글

태그

  • 백트래킹
  • Kubernetes
  • Network
  • 다이나믹 프로그래밍
  • BFS
  • 프로그래머스
  • docker
  • django
  • boj
  • DFS

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
Henu

개발냥발

Algorithm/BOJ

[백준 15591] MooTube(Silver) (C++)

2021. 9. 28. 20:31
 

15591번: MooTube (Silver)

농부 존은 1번 동영상과 2번 동영상이 USADO 3을 가지고, 2번 동영상과 3번 동영상이 USADO 2를 가지고, 2번 동영상과 4번 동영상이 USADO 4를 가진다고 했다. 이것에 기반해서 1번 동영상과 3번 동영상의

www.acmicpc.net

 

 

N과 Q가 각각 최대 5000이므로 주어지는 쿼리마다 매번 bfs를 수행해도 시간에 늦지 않을 것이라고 생각했다.

 

시작점에서 bfs를 수행하면서 다음 영상과의 유사도(USADO)가 K보다 작은 경우 다음 영상은 추천되지 않는다고 생각하면 편하다. K보다 큰 경우에만 다음 영상의 번호를 큐에 넣으면서 bfs를 수행하고 그 수를 카운팅을 해준다면 매 쿼리마다 답을 구할 수 있게 된다.

 

 

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
#include <iostream>
#include <vector>
#include <queue>
#include <algorithm>
#include <cstring>
#define fasti ios_base::sync_with_stdio(false); cin.tie(0);
#define fastio ios_base::sync_with_stdio(false); cin.tie(0); cout.tie(0);
#define INF 1e9+7
#define pii pair<int, int>
 
typedef long long ll;
// typedef pair<int, int> pii;
 
using namespace std;
 
int N, Q;
 
vector<pii > adj[5001];
 
void input(){
    cin >> N >> Q;
    int p, q, r;
    for(int i = 0; i < N-1; i++){
        cin >> p >> q >> r;
        adj[p].push_back({r, q});
        adj[q].push_back({r, p});
    }
}
 
int bfs(int k, int v){
    int cnt = 0;
    
    bool visited[5001];
    memset(visited, 0, sizeof(visited));
    visited[v] = true;
    
    queue<int> que;
    que.push(v);
    
    while(!que.empty()){
        int now = que.front();
        que.pop();
        
        for(int i = 0; i < adj[now].size(); i++){
            int next = adj[now][i].second;
            int next_road = adj[now][i].first;
            
            if(visited[next]) continue;
            if(next_road < k) continue;
            
            cnt++;
            visited[next] = true;
            que.push(next);
        }
    }
    
    return cnt;
}
 
void solve(){
    int k, v;
    for(int i = 0; i < Q; i++){
        cin >> k >> v;
        cout << bfs(k, v) << "\n";
    }
}
 
int main(){
    fastio
    input();
    solve();
    
    return 0;
}
 
 
Colored by Color Scripter
cs

'Algorithm > BOJ' 카테고리의 다른 글

[백준 2479] 경로찾기 (C++)  (0) 2021.09.29
[백준 16437] 양 구출 작전 (C++)  (0) 2021.09.28
[백준 3980] 선발 명단 (C++)  (0) 2021.09.15
[백준 1339] 단어수학 (C++)  (0) 2021.09.12
[백준 2529] 부등호 (C++)  (0) 2021.09.12
    'Algorithm/BOJ' 카테고리의 다른 글
    • [백준 2479] 경로찾기 (C++)
    • [백준 16437] 양 구출 작전 (C++)
    • [백준 3980] 선발 명단 (C++)
    • [백준 1339] 단어수학 (C++)

    티스토리툴바