hdu1068 二分图最大独立子集

来源:互联网 发布:音量放大软件 编辑:程序博客网 时间:2024/06/06 21:38
#include <iostream>#include <string.h>using namespace std;const int MAXN = 101;int n, m;int c[MAXN][MAXN];int match[MAXN];bool vis[MAXN];void init(){    memset(match, -1, sizeof(match));}bool dfs(int u){    for (int i = 1; i < m; i++)    {        if (c[u][i] && !vis[i])        {            vis[i] = true;            if (match[i] == -1 || dfs(match[i]))            {                match[i] = u;                return true;            }        }    }    return false;}void solve(){    int ans = 0;    for (int i = 1; i < n; i++)    {        memset(vis, false, sizeof(vis));        if (dfs(i))        {            ans++;        }    }    cout << ans << endl;}void input(){    int num;    while (cin >> n, n)    {        cin >> m >> num;        init();        int x, u, v;        memset(c, 0, sizeof(c));        for (int i = 0; i < num; i++)        {            cin >> x >> u >> v;            c[u][v] = 1;        }        solve();    }}int main(){    input();    return 0;}
//邻接表没过

0 0
原创粉丝点击