POJ 1422【最小路覆盖数】
题意:
背景:
小镇有n个路口,空降兵可以在任意路口降落。有m条通往别的路口的单向边,但是不会出现循环。
问最少空降多少个士兵可以走完所有路口。
数据输入:
测试组数 t
每组有:
路口数 n
边数 m
接下来m组,每组a b代表a到b的单向边。
思路:
这是一个朴素的最小路覆盖数问题。
定理:最小路覆盖数=节点数-最大匹配数。
二分匹配的匈牙利算法不重复。
【菜鸟第一次写最大匹配,代码的错误在于当找到来源是本身的时候继续递归了】
/*************************************************************************
> File Name: F.cpp
> Author: ttpond
> Created Time: 2015-8-17 9:55:53
************************************************************************/
#include<stdio.h>
#include<string.h>
#include<algorithm>
#include<iostream>
#include<math.h>
#include<vector>
#include<map>
#include<queue>
#include<stack>
using namespace std;
vector<int>tmp[];
bool vis[];
int from[];
int ans=;
void dfs(int n)
{
vector<int>::iterator it;
for(it=tmp[n].begin();it!=tmp[n].end();it++)
{
if(!vis[*it])
{
from[*it]=n;
vis[*it]=;
ans++;
break;
}
else
{
if(from[*it]!=n)
dfs(from[*it]);
}
}
}
int main()
{
int t,tt,v,e;
scanf("%d",&t);
for(tt=;tt<t;tt++)
{
ans=;
memset(vis,,sizeof(vis));
scanf("%d%d",&v,&e);
for(int i=;i<=v;i++)
tmp[i].clear();
for(int i=;i<e;i++)
{
int a,b;
scanf("%d%d",&a,&b);
tmp[a].push_back(b);
}
for(int i=;i<=v;i++)
dfs(i);
printf("%d\n",v-ans);
}
return ;
}
POJ 1422【最小路覆盖数】的更多相关文章
- POJ 1422 Air Raid(二分图匹配最小路径覆盖)
POJ 1422 Air Raid 题目链接 题意:给定一个有向图,在这个图上的某些点上放伞兵,能够使伞兵能够走到图上全部的点.且每一个点仅仅被一个伞兵走一次.问至少放多少伞兵 思路:二分图的最小路径 ...
- POJ - 1422 Air Raid(DAG的最小路径覆盖数)
1.一个有向无环图(DAG),M个点,K条有向边,求DAG的最小路径覆盖数 2.DAG的最小路径覆盖数=DAG图中的节点数-相应二分图中的最大匹配数 3. /* 顶点编号从0开始的 邻接矩阵(匈牙利算 ...
- POJ 1422 Air Raid
题目链接: http://poj.org/problem?id=1422 Description Consider a town where all the streets are one-way a ...
- poj 1422 Air Raid 最少路径覆盖
题目链接:http://poj.org/problem?id=1422 Consider a town where all the streets are one-way and each stree ...
- POJ 3041 Asteroids 最小覆盖数
http://poj.org/problem?id=3041 题目大意: 一辆宇宙飞船在一个小行星带中,你知道,这很危险.他有一种武器,可以清除掉一行或一列的小行星.问把小行星全部清除最少的武器使用次 ...
- Air Raid POJ - 1422 【有向无环图(DAG)的最小路径覆盖【最小不相交路径覆盖】 模板题】
Consider a town where all the streets are one-way and each street leads from one intersection to ano ...
- POJ 1422 DAG最小路径覆盖
求无向图中能覆盖每个点的最小覆盖数 单独的点也算一条路径 这个还是可以扯到最大匹配数来,原因跟上面的最大独立集一样,如果某个二分图(注意不是DAG上的)的边是最大匹配边,那说明只要取两个端点只要一条边 ...
- POJ 1422 二分图(最小路径覆盖)
Air Raid Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 7278 Accepted: 4318 Descript ...
- POJ 1422
#include <iostream> #define MAXN 350 using namespace std; int mat[MAXN][MAXN]; bool mark[MAXN] ...
随机推荐
- C# string日期格式
百分数格式应该用“p”这个参数. 格式 原始 数据 结 果 "{0:P}" 0.40 40% 数字 {0:N2} 12.36 数字 {0:N0} 13 货币 {0:c2} $1 ...
- TFS强制删除离职人员签出锁定项的方法(转)
项目组一哥们走的时候以独占方式迁出了文件,现在其他人都无法修改,管理员似乎也无法将文件解除.经过摸索,找到了一种暴力的方法——直接改TFS数据库.虽然暴力,却能实实在在地解决这个问题. 步骤: 1 ...
- AS400服务程序总结
1.服务程序的创建和调用过程 1.1生成module 1.2编写BND文件确定输出接口 1.3生成服务程序 1.3.运行调用程序时,将服务程序导入到作业内存区active group,常驻内存 2.结 ...
- 升级或者重装Discuz! 版本后 QQ互联英文乱码显示的正确解决方法
升级Discuz! X3版本QQ互联英文乱码!connect_viewthread_share_to_qq! 目前Discuz!论坛上 最简单的解决方法: 第一步:后台----->站长---- ...
- mybatis 实现批量更新
更新单条记录 1 UPDATE course SET name = 'course1' WHERE id = 'id1'; 更新多条记录的同一个字段为同一个值 1 UPDATE course SET ...
- Echarts 异步数据加载遇到的问题
看了Echarts官网异步加载数据的Demo var myChart = echarts.init(document.getElementById('main')); // 显示标题,图例和空的坐标轴 ...
- 洛谷——P1627 [CQOI2009]中位数
P1627 [CQOI2009]中位数 给出1~n的一个排列,统计该排列有多少个长度为奇数的连续子序列的中位数是b.中位数是指把所有元素从小到大排列后,位于中间的数. 中位数的题目有关统计的话,可以转 ...
- 智能指针unqiue_ptr
unique_ptr unique_ptr 对它指向的对象在同一时刻是独占的.它要么在构造的时候使用内置指针初始化,要么使用reset给其赋值.当unique_ptr被销毁时,它所指向的对象也被销毁. ...
- 生产环境屏蔽swagger(动态组装bean)
spring动态组装bean 背景介绍: 整合swagger时需要在生产环境中屏蔽掉swagger的地址,不能在生产环境使用 解决方案 使用动态profile在生产环境中不注入swagger的bean ...
- 内存区--Java
一.概述 对于 Java 程序员来说,在虚拟机自动内存管理机制下,不再需要像C/C++程序开发程序员这样为内一个 new 操作去写对应的 delete/free 操作,不容易出现内存泄漏和内存溢出问题 ...