Koder / 박성훈
article thumbnail

실버작 겸 감을 잃지않기위해 무난한난이도 문제를 풀고있다.

 

https://www.acmicpc.net/problem/2606

 

2606번: 바이러스

첫째 줄에는 컴퓨터의 수가 주어진다. 컴퓨터의 수는 100 이하이고 각 컴퓨터에는 1번 부터 차례대로 번호가 매겨진다. 둘째 줄에는 네트워크 상에서 직접 연결되어 있는 컴퓨터 쌍의 수가 주어

www.acmicpc.net

방문여부를 검사하는 visit배열을 만들어서

탐색후 visit배열에 남은 방문한곳들을 더하고

마지막으로 처음 시작한 1을 빼주면 AC.

 

#include <stdio.h>
#include <vector>

using namespace std;

vector<int> arr[101];
int visit[101] = {0};

void search(int node){
	for(int i=0; i<arr[node].size(); i++){
		if(visit[arr[node][i]] == 0){
			visit[arr[node][i]] = 1;
			search(arr[node][i]);
		}
	}
}

int main(){
	int n,k;
	int a,b;
	int sum=0;
	scanf("%d", &n);
	scanf("%d", &k);
	for(int i=0; i<k; i++){
		scanf("%d %d", &a, &b);
		arr[a].push_back(b);
		arr[b].push_back(a);
	}
	
	search(1);
	
	for(int i=0; i<=100; i++) sum+=visit[i];
	printf("%d", sum-1);
	return 0;
}

 

반응형