1 条题解

  • 0
    @ 2024-11-6 20:54:50
    #include <bits/stdc++.h>
    using namespace std;
    const int maxn = 505;
    
    vector<int> boy[maxn]; // boy[x] 男生x有好感的所有女生
    int girl[maxn]; // girl[y] 女生y的舞伴
    bool vis[maxn]; // vis[y] 女生y有没有被问过
    int n, m, ans;
    
    bool dfs(int x) {
    	for (auto y : boy[x]) {
    		if (vis[y])
    			continue;
    		vis[y] = true;
    		if (!girl[y] || dfs(girl[y])) {
    			girl[y] = x;
    			return true;
    		}
    	}
    	return false;
    }
    
    int main() {
    	cin >> n >> m;
    	while (m--) {
    		int x, y;
    		cin >> x >> y;
    		boy[x].push_back(y);
    	}
    	for (int x = 1; x <= n; x++) {
    		fill(vis+1, vis+n+1, false);
    		if (dfs(x))
    			ans++;
    	}
    	cout << ans << endl;
    	return 0;
    }
    
    • 1

    信息

    ID
    88
    时间
    1000ms
    内存
    256MiB
    难度
    9
    标签
    (无)
    递交数
    12
    已通过
    4
    上传者