hdu 1054 Strategic Game 最小点覆盖集

原创 2015年11月20日 16:26:33
#include <stdio.h>
#include <string.h>
#include <iostream>
#include <algorithm>
#include <vector>
#include <queue>
#include <stack>
#include <set>
#include <map>
#include <string>
#include <math.h>
#include <stdlib.h>
#include <time.h>
using namespace std;
const int MAXN=1500+10;
const int MAXM=1500*10;
struct Edge
{
    int to,next;
} edge[MAXM];
int head[MAXN],tot,mx[MAXN],cx[MAXN],cy[MAXN],mk[MAXN];

void addedge(int from,int to)
{
    edge[tot].to=to;
    edge[tot].next=head[from];
    head[from]=tot++;
}

void init()
{
    memset(head,0xff,sizeof(head));
    tot=0;
}

int dfs(int u)
{
    for(int i=head[u]; i!=-1; i=edge[i].next)
    {
        int v=edge[i].to;
        if(!mk[v])
        {
            mk[v]=1;
            if(cy[v]==-1||dfs(cy[v]))
            {
                cx[u]=v;
                cy[v]=u;
                return 1;
            }
        }
    }
    return 0;
}

int Maxmatch(int n)
{
    int res=0;
    memset(cx,0xff,sizeof(cx));
    memset(cy,0xff,sizeof(cy));
    for(int i=1; i<=n; i++)
    {
        if(cx[i]==-1)
        {
            memset(mk,0,sizeof(mk));
            res+=dfs(i);
        }
    }
    return res;
}

int main()
{
    int _,n,m,i,j,u,v;
    while(~scanf("%d",&n))
    {
        init();

        for(i=0;i<n;i++)
        {
            scanf("%d:(%d)",&u,&m);
            for(j=0;j<m;j++)
            {
                scanf("%d",&v);
                addedge(u+1,v+1);
                addedge(v+1,u+1);
            }
        }
        printf("%d\n",Maxmatch(n)/2);
    }
    return 0;
}
版权声明:本文为博主原创文章,未经博主允许不得转载。http://www.xiang578.com

相关文章推荐

hdu 1054 Strategic Game 二分图的匹配,最小点覆盖数

Bob enjoys playing computer games, especially strategic games, but sometimes he cannot find the solu...

HDU 1054 Strategic Game 二分图最小点覆盖

题意:给你一颗树,一个点可以占领跟它连的所有的边。问最少需要多少个这样的点?思路:一眼就是染色之后二分图最小点覆盖。坑点:T得我不能自理,发现是边数组开小了,我加的双向边,也是爽。 http://...

HDU--1054--Strategic Game【最小点覆盖】

链接:http://acm.hdu.edu.cn/showproblem.php?pid=1054 题意:一个熊孩子玩策略游戏,他需要用最少的士兵守卫最多的道路,如果这个顶点有士兵,则和这个点相连的...

hdoj1054 Strategic Game(二分图最大匹配求最小点覆盖)

Strategic Game Time Limit: 20000/10000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)...
  • CqZtw
  • CqZtw
  • 2017-06-03 11:27
  • 111

POJ 1463 Strategic game (树形dp 树的最小点覆盖 水)

POJ 1463 Strategic game (树形dp 树的最小覆盖 水)

Uva 1292 - Strategic game 树形dp 最小点覆盖

Bob enjoys playing computer games, especially strategic games, but sometimes he cannot find the solu...

poj 1325 Machine Schedule(二部图最小点覆盖集 最大匹配 匈牙利算法)(简单)

poj 1325 Machine Schedule(二部图最小点覆盖集 最大匹配 匈牙利算法)(简单)

uva 11419 SAM I AM 求出二分图的最小点覆盖集

Problem C SAM I AM Input: Standard Input Output: Standard Output   The world is in great danger...

二分图变种之最小路径覆盖、最小点覆盖集【poj3041】【poj2060】

[pixiv] https://www.pixiv.net/member_illust.php?mode=medium&illust_id=54859604 向大(hei)佬(e)势力学(di)习(...

二分图相关定理及其证明(最小点覆盖+最小路径覆盖+最大独立集+最小覆盖集)

①最小路径覆盖: 给定有向图G=(V,E)。设P 是G 的一个简单路(顶点不相交)的集合。如果V 中每个顶点恰好在P 的一条路上,则称P是G 的一个路径覆盖。P 中路径可以从V 的任何一个顶点开始,...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)