본문 바로가기

Algorithm

[S/W 문제해결 기본] 4일차 - 길찾기

반응형

https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV14geLqABQCFAYD&categoryId=AV14geLqABQCFAYD&categoryType=CODE

 

SW Expert Academy

SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!

swexpertacademy.com

 

간단한 도달 문제 . 게리멘더링 등에서 사용되는 길따라 이동시 모든 지점을 방문 하는가에 대한 문제에서 99번째 노드를 방문하는가로만 수정하면 끝이다.

#include<iostream>
#include<string.h>
#include<queue>
using namespace std;

int arr[100][2];
bool visit[100];

int main(int argc, char** argv)
{

	for(int test = 0; test < 10; test++)
	{
	
		int tc , set_num;
		cin >> tc >> set_num;
		memset(arr,0,sizeof(arr));
		memset(visit,false,sizeof(visit));
		
		
		for(int i = 0; i < set_num; i++)
		{
			int start,end;
			cin >> start >> end;
			
			if(!arr[start][0])
			{
				arr[start][0] = end;
			}
			else
			{
				arr[start][1] = end;
			}
		}
		
		visit[0] = true;
		queue<int> que;
		
		for(int i = 0; i <= 1; i++)
		{
			if(arr[0][i])
			{
				que.push(arr[0][i]);
				visit[arr[0][i]] = true;
			}
		}
		
		bool flag = false;
		
		while(!que.empty())
		{
			if(visit[99])
			{
				flag = true;
				break;
			}
			
			int next = que.front();
			que.pop();
			
			for(int i = 0; i <= 1; i++)
			{
				if(arr[next][i])
				{
					visit[arr[next][i]] = true;
					que.push(arr[next][i]);
				}
			}
		}
		
		if(flag)
		{
			cout << "#" <<tc<<" "<<1<<endl;
		}
		else
		{
			cout << "#" <<tc<<" "<<0<<endl;
		}
	
	}
	return 0;
}
반응형