题意:给一个有向无环图,求出来最少需要几个士兵可以遍历所有的边。
分析:有向无环图的最小边覆盖 = 点数 - 最大匹配数
为什么是这样的公式??可以思考一下,如果这N个点之间没有边,是不是应该有N个士兵去查看,但是如果增加一条边就应该减去这条边,以此类推,公式就比较容易明白了。
********************************************************************
#include<stdio.h>
#include<string.h>
#include<queue>
using namespace std; const int MAXN = 205;
const int oo = 1e9+7; bool G[MAXN][MAXN], used[MAXN];
int My[MAXN], N; bool Find(int i)
{
    for(int j=1; j<=N; j++)
    {
        if( G[i][j] && used[j] == false )
        {
            used[j] = true;
            if( !My[j] || Find(My[j]))
            {
                My[j] = i;
                return true;
            }
        }
    }     return false;
} int main()
{
    int T;     scanf("%d", &T);     while(T--)
    {
        int i, M, u, v, ans=0;         scanf("%d%d", &N, &M);         memset(G, false, sizeof(G));
        memset(My, false, sizeof(My));         for(i=1; i<=M; i++)
        {
            scanf("%d%d", &u, &v);
            G[u][v] = true;
        }         for(i=1; i<=N; i++)
        {
            memset(used, false, sizeof(used));
            if( Find(i) == true )
                ans++;
        }         printf("%d\n", N-ans);
    }     return 0;
}

J - Air Raid - hdu 1151(最小边覆盖)的更多相关文章

  1. Air Raid HDU 1151

    题意  给定n个路口 加上一些单向路  求遍历完所有路口需要多少人  人是空降的 哪里都可以作为起点 求 最小边覆盖   (用最少的边覆盖所有的点) 也叫最小路径覆盖(更形象) 也叫二分图的最大独立集 ...

  2. (匹配 最小路径覆盖)Air Raid --hdu --1151

    链接: http://acm.hdu.edu.cn/showproblem.php?pid=1151 http://acm.hust.edu.cn/vjudge/contest/view.action ...

  3. POJ1422 Air Raid 【DAG最小路径覆盖】

    Air Raid Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 6763   Accepted: 4034 Descript ...

  4. hdu 1151 最小路径覆盖

    先说说最小路径覆盖的定义 定义:在一个有向图中,找出最少的路径,使得这些路径,经过每一个点,且每一个点只与一条路径相关联, 由上面得出: 1.一个单独的点是一个路径 2:如果有路径a,b,c....f ...

  5. hdu 1151 Air Raid DAG最小边覆盖 最大二分匹配

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1151 题目大意: 城镇之间互相有边,但都是单向的,并且不会构成环,现在派伞兵降落去遍历城镇,问最少最少 ...

  6. hdu 1151 Air Raid(二分图最小路径覆盖)

    http://acm.hdu.edu.cn/showproblem.php?pid=1151 Air Raid Time Limit: 1000MS   Memory Limit: 10000K To ...

  7. HDU1151:Air Raid(最小边覆盖)

    Air Raid Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Su ...

  8. hdu 1150 Machine Schedule hdu 1151 Air Raid 匈牙利模版

    //两道大水……哦不 两道结论题 结论:二部图的最小覆盖数=二部图的最大匹配数 有向图的最小覆盖数=节点数-二部图的最大匹配数 //hdu 1150 #include<cstdio> #i ...

  9. (hdu step 6.3.3)Air Raid(最小路径覆盖:求用最少边把全部的顶点都覆盖)

    题目: Air Raid Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total ...

随机推荐

  1. Linux使用SSH远程连接方式和更改密码 ,自己空间转移过来的。

    一. 远程连接Linux系统需要一个方便的SSH连接工具putty就不错!工具在本日志的附件下载,解压密码是QQ号,云盘访问密码 90891.把远程主机ip和端口号填写上然后选择连接方式为“SSH”. ...

  2. Strust2 <c:forEach> 循环控制标签

    <c:forEach>为循环控制标签 语法:迭代一集合对象中的所有成员 <c:forEach [var="varName"] items="collec ...

  3. 异步tcp通信——APM.ConsoleDemo

    APM测试 俗话说麻雀虽小,五脏俱全.apm虽然简单,但是可以实现单机高性能消息推送(可以采用redis.kafka等改造成大型分布式消息推送服务器). 测试demo: using System; u ...

  4. codevs2618核电站问题

    /* 因为m为连续放的个数 所以状态要包括这个条件 定义状态:f[n][m]表示第n个坑连续放了m个 转移:分两种 1. 第x个坑 放 即m>=1 则 f[x][k]=f[x-1][k-1] 2 ...

  5. niop 2014寻找道路

    /* 乍一看就是个最短路 SFPA 但是要保证路径上的所有点的出边所指向的点都直接或间接与终点连通. 这一点就蛋疼了0.0 开始想的是正着跑一边 每一个点的所有边都能符合条件 那这个点就符合条件0.0 ...

  6. C#学习第五天

    字符串的处理 string可作char的只读数组 下面这段字符表示访问每个字符: string myString="A string."; char myChar=myString ...

  7. .NET六大剑客:栈、堆、值类型、引用类型、装箱和拆箱

    .NET六大剑客:栈.堆.值类型.引用类型.装箱和拆箱 一.“堆”,“栈”专区 这两个字我相信大家太熟悉了,甚至于米饭是什么?不知道...“堆”,“栈”是什么?哦,这个知道... 之前我也写过一篇堆栈 ...

  8. Jquery~$when_done_then的用法

    对于$.ajax请求来说,如果层级比较多,程序看起来会比较乱,而为了解决这种问题,才有了$when...done...fail...then的封装,它将$.ajax这嵌套结构转成了顺序平行的结果,向下 ...

  9. Activity对话框

    对话框Activity style 在style.xml中加入 <!--对话框风格--> <style name="dialog" parent="@a ...

  10. 从cellForRowAtIndexPath 看cell的重用机制

    今天突然发现一个问题,由于对UITableViewCell 的重用机制不是很了解,让我纠结很久: 用过reloadData时候,会调用cellForRowAtIndexPath方法,但是请看以下2种c ...