二分图最大匹配

来源:互联网 发布:ubuntu 安装 ssh 编辑:程序博客网 时间:2024/06/05 10:27
#include <bits/stdc++.h>using namespace std;int e[101][101];int match[101];int book[101];int n, m;int dfs(int u){    int i;    for(i = 1; i <= n; i++)    {        if(book[i] == 0 && e[u][i] == 1)        {            book[i] = 1;            if(match[i] == 0 || dfs(match[i]))                {                    match[i] = u;                    match[u] = i;                    return 1;                }        }    }    return 0;}int main(){    int i, t1, t2, sum = 0;    cin >> n >> m;    for(i = 1; i <= m; i++)    {        cin >> t1 >> t2;        e[t1][t2] = e[t2][t1] = 1;    }    memset(match, 0, sizeof(match));    for(i = 1; i <= n; i++)        {            memset(book, 0, sizeof(book));            if(dfs(i)) sum++;        }    cout << sum << endl;    return 0;}

原创粉丝点击