HDU 1054

原创 2013年12月03日 21:32:29

 这道题目是二分匹配,我一开始用的是邻接矩阵,却交上去超时了,
 于是我想到教主说的用vector来存二维数组,但是不太熟悉,后来
  看了匡斌的博客里面就有这样写的模板,就看了看,
  代码如下:
  #include <iostream>
#include <cstdio>
#include <cstring>
#include <vector>
#include <algorithm>
using namespace std;
const int maxn=1505;
int dist[maxn];
bool vis[maxn];
vector<int>mp[maxn];
int n,m,k;


bool dfs(int a)
{
    for(int i=0; i<mp[a].size(); i++)
    {
        if(!vis[mp[a][i]])
        {
            vis[mp[a][i]]=true;
            if(dist[mp[a][i]]==-1||dfs(dist[mp[a][i]]))
            {
                dist[mp[a][i]]=a;
                return true;
            }
        }
    }
    return false;
}


int ff()
{
    int ans=0;
    memset(dist,-1,sizeof(dist));
    for(int i=0; i<n; i++)
    {
        memset(vis,false,sizeof(vis));
        if(dfs(i))ans++;
    }
    return ans;
}




int main()
{
    while(scanf("%d",&n)!=EOF)
    {
        for(int i=0; i<maxn; i++)
              mp[i].clear();
        for(int i=0; i<n; i++)
        {
            scanf("%d:(%d)",&m,&k);
            while(k--)
            {
                int x;
                scanf("%d",&x);
                mp[m].push_back(x);
                mp[x].push_back(m);
            }
        }
        printf("%d\n",ff()/2);
    }
    return 0;
}

相关文章推荐

hdu 1054

OJ #include #include #include #include #include #include #include #include #include #inclu...

hdu1054(二分图+最小点覆盖数+匈牙利算法)

Strategic Game Time Limit: 20000/10000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)...

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

Bob enjoys playing computer games, especially strategic games, but sometimes he cannot find the solu...
  • winycg
  • winycg
  • 2016年03月21日 17:09
  • 146

HDU 1054 Strategic Game 最小顶点覆盖

问题描述: Problem Description Bob enjoys playing computer games, especially strategic games, but somet...

HDU 1054 最小定点覆盖

点击打开链接 题意:一个顶点要一个人放哨,则和他相连的几个定点就不需要人放哨了,问最少需要多少人放哨 思路:很明显的题意,很明显的最小顶点覆盖,最小顶点覆盖=最大匹配,建个双向边,结果除2,我的二...
  • Dan__ge
  • Dan__ge
  • 2016年04月01日 13:39
  • 430

HDU 1054 Strategic Game(二分图 匈牙利算法)

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

hdu1054Strategic Game(树形DP)

Problem Description Bob enjoys playing computer games, especially strategic games, but sometimes he ...

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

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

hdu 1054 Strategic Game 树状DP

传送门:hdu 1054 Strategic Game题目大意一城堡的所有的道路形成一个n个节点的树,如果在一个节点上放上一个士兵,那么和这个节点相连的边就会被看守住,问把所有边看守住最少需要放多少士...

HDU 1054 Strategic Game 二分匹配 | 树型DP | 贪心

Strategic Game Time Limit: 20000/10000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:HDU 1054
举报原因:
原因补充:

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