b1ackhand 2023. 6. 2. 18:51
int visited[202];
int A[102];
int B[102];
vector<int> arr[102];

bool dfs(int a)
{
	visited[a] = true;
	for (int b : arr[a]) 
	{
		if (B[b] == -1 || !visited[B[b]] && dfs(B[b])) 
		{
			A[a] = b;
			B[b] = a;
			return true;
		}
	}
	return false;
}

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

	memset(A, -1, sizeof(A));
	memset(B, -1, sizeof(B));
    
    int cnt = 0; 
	for (int i = 1; i <= N; i++) 
	{
		if (A[i] != -1)
			continue;

		memset(visited, 0, sizeof(visited));
		if (dfs(i)) 
			cnt++;
	}
		
}