diff --git a/dhlee777/README.md b/dhlee777/README.md index 2cbf92f..16a6955 100644 --- a/dhlee777/README.md +++ b/dhlee777/README.md @@ -5,6 +5,7 @@ | 1차시 | 2024.03.12 | BFS | [숨바꼭질](https://www.acmicpc.net/problem/1697) | [#4](https://github.com/AlgoLeadMe/AlgoLeadMe-8/pull/4)| | 2차시 | 2024.03.18 | DP | [쉬운계단수](https://www.acmicpc.net/problem/10844) | [#8](https://github.com/AlgoLeadMe/AlgoLeadMe-8/pull/8)| | 3차시 | 2024.03.23 | union-find | [집합의 표현](https://www.acmicpc.net/problem/1717) | [#14](https://github.com/AlgoLeadMe/AlgoLeadMe-8/pull/14)| +| 4차시 | 2024.03.25 | BFS | [바이러스](https://www.acmicpc.net/problem/2606) | [#17](https://github.com/AlgoLeadMe/AlgoLeadMe-8/pull/17)| diff --git "a/dhlee777/bfs/\353\260\224\354\235\264\353\237\254\354\212\244.cpp" "b/dhlee777/bfs/\353\260\224\354\235\264\353\237\254\354\212\244.cpp" new file mode 100644 index 0000000..d81f922 --- /dev/null +++ "b/dhlee777/bfs/\353\260\224\354\235\264\353\237\254\354\212\244.cpp" @@ -0,0 +1,81 @@ + +//*ù° Ǯ(bfs ̿) +#include +#include +#include +using namespace std; +vectorcom_edge[101]; //ǻͰ ϴ +int visited[101]; // ǻ Ȯϱ 迭 +queue q; +int coun = 0; +void bfs(int a) { //bfs Լ + q.push(a); + visited[a] = 1; + while (!q.empty()) { + int com = q.front(); + q.pop(); + for (int i = 0; i < com_edge[com].size(); i++) { + int com_linked = com_edge[com][i]; + if (!visited[com_linked]) + { + q.push(com_linked); + coun++; //湮 ǻϰ īƮ + visited[com_linked] = 1; + } + } + } + +} +int main(void) { + ios_base::sync_with_stdio(false); + cin.tie(NULL); + int com_num, edge, a, b; + cin >> com_num >> edge; + for (int i = 0; i < edge; i++) { + cin >> a >> b; + com_edge[a].push_back(b); + com_edge[b].push_back(a); + } + bfs(1); + cout << coun; + return 0; +} + + + +//* ι° Ǯ (union-find ̿) +#include +using namespace std; +int parent [101]; //ǻ θǻ͸ ϴ 迭 +int find_parent(int a) { //Ʈ ǻ͸ ã Լ + if (a == parent[a]) return a; + else return parent[a] = find_parent(parent[a]); + +} +void add(int a, int b) { //ΰ ǻͰ ġ Լ + a = find_parent(a); + b = find_parent(b); + if (a > b) parent[a] = b; + else parent[b] = a; +} +int main(void) { + ios_base::sync_with_stdio(false); + cin.tie(NULL); + int com_num, edge,a,b; + cin >> com_num >> edge; + for (int i = 1; i <= com_num; i++) { //ó ڽ θ ڽ̱⿡ ʱȭش. + parent[i] = i; + } + for (int i = 0; i < edge; i++) { + cin >> a >> b; + add(a, b); + } + int coun = 0; + for (int i = 1; i <= com_num; i++) { // ǻ ƮǻͰ 1̶ 1 ̹Ƿ ڸ īƮѴ. + if (find_parent(i) == 1) coun++; + } + + cout << coun-1; //1 ǻͿ ǻ °̹Ƿ 1ǻ͸ ش. + return 0; +} +