※ 글쓴이는 취미로 코딩을 익혀보는 사람이라 정확하지 않은 내용을 담고 있을 수 있다 ※
이번에 볼 문제는 백준 11255번 문제인 ITAI Virus이다.
문제는 아래 링크를 확인하자.
https://www.acmicpc.net/problem/11255
조건에 따르면, (1)주어지는 바이러스 진원지 및 (2) 진원지와 직접적으로 인접한 도시들에 ITAI Virus가 퍼지게 됨을 알 수 있다.
각 도시와 연결된 도시가 어디인지를 인접행렬 또는 인접리스트의 형태로 저장하고 주어진 조건을 만족하는지 체크하는 배열을 활용하면 문제가 요구하는 값을 충분히 빠르게 계산할 수 있다.
아래는 제출한 소스코드이다.
#include <iostream>
#include <vector>
#include <cstring>
using namespace std;
int N, M, K;
vector<int> G[1001];
int A[1001];
void solve() {
cin >> N >> M >> K;
for (int i = 1; i <= N; i++) G[i].clear();
while (M--) {
int x, y; cin >> x >> y;
G[x].emplace_back(y);
G[y].emplace_back(x);
}
memset(A, 0, sizeof(A));
while (K--) {
int x; cin >> x;
A[x] = 1;
for (auto &y : G[x]) A[y] = 1;
}
int ans = 0;
for (int i = 1; i <= N; i++) ans += A[i];
cout << ans << '\n';
}
int T;
int main() {
ios::sync_with_stdio(0);
cin.tie(0);
cin >> T;
while (T--) solve();
}
728x90
'BOJ' 카테고리의 다른 글
[BOJ 18866 // C++] 젊은 날의 생이여 (0) | 2024.07.09 |
---|---|
[BOJ 11626 // C++] Physical Music (0) | 2024.07.08 |
[BOJ 5351 // C++] Coin Row (0) | 2024.07.06 |
[BOJ 5081 // C++] Constellations (0) | 2024.07.05 |
[BOJ 3933 // C++] 라그랑주의 네 제곱수 정리 (0) | 2024.07.04 |