반응형
1에서 시작해서 방문할 수 있는 모든 노드를 찾는 문제.
C++ 풀이
#include <bits/stdc++.h>
using namespace std;
vector<int> v[101];
bool visited[101];
queue<int> q;
int cnt = 0;
void bfs()
{
visited[1] =true;
q.push(1);
while(!q.empty())
{
int a = q.front();
q.pop();
for(int i =0; i<v[a].size(); i++)
{
if(visited[v[a][i]]== false)
{
cnt++;
visited[v[a][i]] = true;
q.push(v[a][i]);
}
}
}
}
int main(void)
{
ios::sync_with_stdio(false);
cin.tie(NULL);
ifstream in("input.txt");
int N,M;
in >> N >> M ;
for(int i = 0 ; i < M; i++)
{
int a, b;
in >> a >> b;
v[a].push_back(b);
v[b].push_back(a);
}
bfs();
cout << cnt;
}
Python 풀이
import sys
from collections import deque
input = sys.stdin.readline
N = int(input().strip())
M = int(input().strip())
data = [[] for _ in range(N+1)]
visited = [False] * (N+1)
dq = deque()
for _ in range(M):
node1, node2 = map(int,input().split())
data[node1].append(node2)
data[node2].append(node1)
def bfs(data,visited):
dq.append(1)
visited[1] = True
cnt =0
while dq:
node=dq.popleft()
for i in range(len(data[node])):
if visited[data[node][i]] == False:
visited[data[node][i]] = True
cnt+=1
dq.append(data[node][i])
return cnt
print(bfs(data,visited))
반응형
'Algorithm > Problem Solve' 카테고리의 다른 글
[백준 7576번] 토마토 (C++/Python) (0) | 2020.12.26 |
---|---|
[백준 2630번] 색종이 만들기 ( C++/ Python ) (0) | 2020.12.26 |
[백준 1931번] 회의실 배정 (C++ / python 해보기) (0) | 2020.12.24 |
[백준 1927번] 최소 힙(C++ / python) (0) | 2020.12.24 |
[백준 1764번] 듣보잡(이분탐색, C++ / python) (0) | 2020.12.24 |