백준 11403 c++

magicdrill·2024년 4월 3일

백준 문제풀이

목록 보기
253/673

백준 11403 c++

#include <iostream>
#include <vector>
#include <algorithm>

using namespace std;

int N;
vector <int> graph[101];
vector <bool> visited(101, false);

void input_graph()
{
	int i, j, temp;

	for (i = 1; i <= N; i++)
	{
		for (j = 1; j <= N; j++)
		{
			cin >> temp;
			if (temp == 1)
			{
				graph[i].push_back(j);
			}
			else
			{
				;
			}
		}
	}

	return;
}

void reinit_visited()
{
	int i;

	for (i = 0; i < visited.size(); i++)
	{
		visited[i] = false;
	}

	return;
}

void DFS(int start)
{
	int i, temp;

	for (i = 0; i < graph[start].size(); i++)
	{
		temp = graph[start][i];
		if (visited[temp] != true)
		{
			visited[temp] = true;
			DFS(temp);
		}
		else
		{
			;
		}
	}
}

void find_DFS()
{
	int i, j;

	for (i = 1; i <= N; i++)
	{
		reinit_visited();
		DFS(i);
		for (j = 1; j <= N; j++)
		{
			cout << visited[j] << " ";
		}
		cout << "\n";
	}
}

int main(void)
{
	ios_base::sync_with_stdio(false);
	cin.tie(NULL);
	cout.tie(NULL);

	cin >> N;
	input_graph();
	//경로의 존재여부 파악 : DFS
	find_DFS();

	return 0;
}

0개의 댓글