hdoj1150_Machine Schedule(二分图最大匹配)

来源:互联网 发布:电子书转换格式软件 编辑:程序博客网 时间:2024/06/05 01:00

以 机器为点,以任务为边构图

#include<iostream>#include<vector>#include<string.h>using namespace std;vector<int> edge[300];bool used[1100];int con[1100];bool find(int x){    for (int i = 0; i < edge[x].size(); i++)        if (!used[edge[x][i]])        {            used[edge[x][i]] = true;            if (con[edge[x][i]] == -1 || find(con[edge[x][i]]))            {                con[edge[x][i]] = x;                return true;            }        }    return false;}int match(int n){    memset(con, -1, sizeof(con));    int res = 0;    for (int i = 0; i < n; i++)    {        memset(used, false, sizeof(used));        if (find(i))            res++;    }    return res;}int main(){    int n, m, k;    while (cin >> n&&n)    {        cin >> m >> k;        for (int i = 0; i < n; i++)            edge[i].clear();        for (int i = 0; i < k; i++)        {            int a, b, c;            cin >> a >> b >> c;            if (b == 0 || c == 0)                continue;            edge[b].push_back(c);        }        cout << match(n) << endl;    }    return 0;}
0 0
原创粉丝点击