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++;
}
}
'알고리즘 > 알고리즘 이론, 템플릿' 카테고리의 다른 글
인접행렬 분할거듭제곱 (0) | 2023.06.08 |
---|---|
스프라그 그런디 (0) | 2023.06.05 |
MST - Kruskal (0) | 2023.04.03 |
O(nlogn) LIS (0) | 2023.03.28 |
c++ 문자열 slicing 및 파싱 (0) | 2023.03.14 |