페이지

14433번: 한조 대기 중

https://www.acmicpc.net/problem/14433


#include<cstdio>
#include<vector>
#include<cstring>
using namespace std;
int n, m, k1, k2, r[301], vis[301];
vector<int> adj[301];
bool f(int h) {
    if (vis[h]) return false;
    vis[h] = 1;
    for (auto it : adj[h]) if (!r[it] || f(r[it])) {
        r[it] = h;
        return true;
    }
    return false;
}
int main() {
    scanf("%d%d%d%d", &n, &m, &k1, &k2);
    for (int i = 0, x, y; i < k1; i++) {
        scanf("%d%d", &x, &y);
        adj[x].push_back(y);
    }
    int a = 0, b = 0;
    for (int i = 1; i <= n; i++) {
        memset(vis, 0, sizeof(vis));
        a += f(i);
    }
    memset(r, 0, sizeof(r));
    for (int i = 1; i <= n; i++) adj[i].clear();
    for (int i = 0, x, y; i < k2; i++) {
        scanf("%d%d", &x, &y);
        adj[x].push_back(y);
    }
    for (int i = 1; i <= n; i++) {
        memset(vis, 0, sizeof(vis));
        b += f(i);
    }
    puts(a < b ? "네 다음 힐딱이" : "그만 알아보자");
    return 0;
}

댓글 없음 :

댓글 쓰기