hdu 1054 最小定点覆盖

来源:互联网 发布:腾讯什么游戏优化 编辑:程序博客网 时间:2024/05/22 16:52
就是求最小定点覆盖数
#include<bits/stdc++.h>using namespace std;#define ll long long#define me(a) memset(a,-1,sizeof(a))struct node{    int u,next;}e[1505];int top,head[1505],f[1505],book[1505];vector<int>g[1505];void add(int u,int v){    e[top].u=v;    e[top].next=head[u];    head[u]=top++;}int dfs(int x){    for(int i=0;i<g[x].size();i++)    {        int u=g[x][i];        if(book[u]==-1)        {            book[u]=1;            if(f[u]==-1||dfs(f[u]))            {                f[u]=x;                return 1;            }        }    }    return 0;}int main(){    int n;    while(~scanf("%d",&n))    {me(head);top=0; me(f);        for(int i=0;i<n;i++)        {            int a,b,c;            scanf("%d:(%d)",&a,&b);            for(int j=0;j<b;j++)            {                scanf("%d",&c);                g[a].push_back(c);                g[c].push_back(a);            }        }        int ans=0;       for(int i=0;i<n;i++)       {           me(book);           if(dfs(i))ans++;       }       printf("%d\n",ans/2);       for(int i=0;i<=n;i++)        g[i].clear();    }}

原创粉丝点击