poj1466

来源:互联网 发布:数据库有5个事务 编辑:程序博客网 时间:2024/06/11 20:02
#include <iostream>#include<cstdio>#include<algorithm>#include<vector>#include<cstring>using namespace std;const int MAX=505;int n,match[MAX],used[MAX];vector<int> g[MAX];bool dfs(int v){    used[v]=true;    for(int i=0;i<g[v].size();i++)    {        int &u=g[v][i],w=match[u];        if(w<0||!used[w]&&dfs(w))        {            match[v]=u;            match[u]=v;            return true;        }    }    return false;}int matching(){    int ans=0;    memset(match,-1,sizeof(match));    for(int v=0;v<n;v++)    {        if(match[v]<0)        {            memset(used,0,sizeof(used));            if(dfs(v))                ans++;        }    }    return ans;}int main(){    while(cin>>n)    {        for(int i=0;i<MAX;i++)            g[i].clear();        int u,v,num;        for(int i=0;i<n;i++)        {            scanf("%d: (%d)",&u,&num);            for(int j=0;j<num;j++)            {                scanf("%d",&v);                g[u].push_back(v);            }        }        cout<<n-matching()<<endl;    }    return 0;}
最大独立集
0 0