1106 dfs

ph
Admin (토론 | 기여)님의 2017년 11월 6일 (월) 01:00 판
(차이) ← 이전 판 | 최신판 (차이) | 다음 판 → (차이)
이동: 둘러보기, 검색

(bipartite graph에서) dfs는 처음 보는데 참 보면 볼수록 오묘하고 이해가 안간다. 정말 오묘하고 신기하다.

bool dfs(int a)
{
	if (visited[a])
		return false;

	visited[a] = true;

	for (int b = 0; b < m; b++)
	{
		if (adj[a][b])
		{
			if (bMatch[b] == -1 || dfs(bMatch[b]))
			{
				aMatch[a] = b;
				bMatch[b] = a;

				return true;
			}
		}
	}

	return false;
}