반응형

 www.acmicpc.net/problem/2606

 

2606번: 바이러스

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

www.acmicpc.net

 

[ 백준 2606(바이러스) 스택을 1차원 배열로 구현해서 풀이 ]

#include <cstdio>
int main()
{
	int i,n,m,a,b,ans=0;
	int stack[101],top=0;
	bool check[101]={false, };
	bool d[101][101] = {false, };
	
	scanf("%d", &n);
	scanf("%d", &m);
	for(i=0;i<m;i++)
	{
		scanf("%d %d", &a, &b);
		d[a][b] = true;
		d[b][a] = true;
	}
	check[1]=true;
	stack[top]=1;
	top++;
	do{
		a=stack[top-1];
		top--;
		if(top < 0)
		{
			break;
		}
		for(i=1;i<=n;i++)
		{
			if(check[i] == false && d[a][i] )
			{
				stack[top]=i;
				top++;
				check[i]=true;
			}
		}
	}while(1);
	
	for(i=2;i<=n;i++)
	{
		if(check[i])
			ans++;
	}
	printf("%d", ans);
	
	return 0;
}
반응형
Posted by 명문코딩컴퓨터
,