본문 바로가기
  • 실행력이 모든걸 결정한다
카테고리 없음

[그래프, 난이도 하] 백준 2606번 바이러스

by 김코더 김주역 2020. 8. 20.
반응형

BFS, DFS 어느 것을 이용해도 좋다.

자신 1번 컴퓨터를 제외하고 얼마나 많은 컴퓨터를 탐색했는지 카운트만 시켜주면 된다.

그리고 간선 정보 넣을 때 양방향 그래프로 처리해줘야 한다는것을 잊지말자.

실수로 단방향으로 해주면 이렇게 틀린다..

그래프 카테고리에서 이 문제보다 쉬운 문제는 포스팅하지 않을 것이다.

#include <iostream>
#include <algorithm>
#include <string.h>
#include <vector>
#include <queue>
#include <stack>
#include <string>
using namespace std;
vector<int> a[101];
queue<int> q;
bool visited[101];
int maxi(int a,int b){
	if(a>b) return a;
	else return b;
}
int mini(int a,int b){
	if(a<b) return a;
	else return b;
}

int main() {
	ios_base::sync_with_stdio(false);
	cin.tie(NULL);
	cout.tie(NULL);
	int n,m;
	int ans=0;
	cin >> n;
	cin >> m;
	for(int i=0;i<m;i++){
		int x,y;
		cin >> x >> y;
		a[x].push_back(y);
		a[y].push_back(x);
	}
	q.push(1);
	visited[1]=true;
	while(!q.empty()){
		int x=q.front();
		q.pop();
		for(int i=0;i<a[x].size();i++){
			int y=a[x][i];
			if(!visited[y]){
				ans++;
				visited[y]=true;
				q.push(y);
			}
		}
	}
	cout<<ans;
}
반응형

댓글