poj2594 机器人寻找宝藏(最小路径覆盖)
题目来源:http://poj.org/problem?id=2594
参考博客:http://www.cnblogs.com/ka200812/archive/2011/07/31/2122641.html
题解:
最小路径覆盖=|P|-最大匹配数
单向图且没有循环,不可能存在a到b,b又到a,并且可以经过已经经过的点,所以对整个图进行处理,间接连接的点可以看作是直接连接
将整个图分成两边,点与点二分匹配,与平时的两种不同物体匹配不同
#include <iostream>
#include <cstring>
#include <cstdio>
#include <vector>
#include <algorithm>
using namespace std;
const int maxn=500+5;
int ma[maxn][maxn],match[maxn];
bool used[maxn];
int n;
void floyed(){
for(int k=1;k<=n;k++)
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
if(ma[i][k]+ma[k][j]==2)ma[i][j]=1;
}
bool dfs(int x){
for(int i=1;i<=n;i++){
if(ma[x][i]&&used[i]==0){
used[i]=1;
if(match[i]==0||dfs(match[i])){
match[i]=x;
return 1;
} }
}
return 0;
}
int solve(){
memset(match,0,sizeof(match));
int ans=0;
for(int i=1;i<=n;i++){
memset(used,0,sizeof(used));
if(dfs(i))ans++;
}
return n-ans;
}
int main()
{
int m;
while(scanf("%d %d",&n,&m)==2){
if(n==0&&m==0)break;
memset(ma,0,sizeof(ma));
for(int i=1;i<=m;i++){
int a,b;
scanf("%d %d",&a,&b);
ma[a][b]=1;
}
floyed();
cout<<solve()<<endl;
}
return 0;
}
poj2594 机器人寻找宝藏(最小路径覆盖)的更多相关文章
- POJ2594 Treasure Exploration(最小路径覆盖)
Treasure Exploration Time Limit: 6000MS Memory Limit: 65536K Total Submissions: 8550 Accepted: 3 ...
- [POJ2594] Treasure Exploration(最小路径覆盖-传递闭包 + 匈牙利算法)
传送门 引子: 有一个问题,是对于一个图上的所有点,用不相交的路径把他们覆盖,使得每个点有且仅属于一条路径,且这个路径数量尽量小. 对于这个问题可以把直接有边相连的两点 x —> y,建一个二分 ...
- poj2594 (最小路径覆盖 + floyd)
题目链接 http://poj.org/problem?id=2594) 题目大意: 一个有向图中, 有若干条连接的路线, 问最少放多少个机器人,可以将整个图上的点都走过. 最小路径覆盖问题. 分析 ...
- POJ2594:Treasure Exploration(Floyd + 最小路径覆盖)
Treasure Exploration Time Limit: 6000MS Memory Limit: 65536K Total Submissions: 9794 Accepted: 3 ...
- POJ-2594 Treasure Exploration,floyd+最小路径覆盖!
Treasure Exploration 复见此题,时隔久远,已忘,悲矣! 题意:用最少的机器人沿单向边走完( ...
- POJ2594 Treasure Exploratio —— 最小路径覆盖 + 传递闭包
题目链接:https://vjudge.net/problem/POJ-2594 Treasure Exploration Time Limit: 6000MS Memory Limit: 655 ...
- POJ-2594 Treasure Exploration floyd传递闭包+最小路径覆盖,nice!
Treasure Exploration Time Limit: 6000MS Memory Limit: 65536K Total Submissions: 8130 Accepted: 3 ...
- POJ2594 Treasure Exploration【DAG有向图可相交的最小路径覆盖】
题目链接:http://poj.org/problem?id=2594 Treasure Exploration Time Limit: 6000MS Memory Limit: 65536K T ...
- poj2594——最小路径覆盖
Description Have you ever read any book about treasure exploration? Have you ever see any film about ...
随机推荐
- 初学ubuntu之文件权限权限
今天接着做笔记,坚持学习下去. 文件权限修改命令,初学者看见这个命令之后总有些摸不着头脑,这命令里面用到了一些数字,我 自己也是,这次写一篇自己的认识.希望能够帮助到需要学习的人. 首先你可以通过 l ...
- c/c++ vector,map,set,智能指针,综合运用的小例子
标准库,智能指针,综合运用的小例子 功能说明:查询单词在文件中出现的次数,如果在同一行出现多次,只算一次. 比如查询单词:你好 输出的结果: 你好 出现了:2次 (行号 2)xxxxxxx 你好 (行 ...
- php curl参数详解之post方法
利用记录的URL参数解释,写一个post方法: <?php function do_post($url, $data) { $ch = curl_init(); //设置CURLOPT_RETU ...
- BIZHUB184打印机提示维修召唤(m2)修复
其他不用管,按照操作直接干:菜单键--常用设置--左键---左键---常用设置--左键---右键 咦 神奇的进入了service mode 服务模式 选择CLEAR DATA 项---- ...
- #012python实验课
通过三到四周的学习Python选修课程已经学到了网络爬虫这一环节. 基础语法混乱 这是,在进行周四实验课程的时候,一直遇到的一个问题.写着写着,就往C语言的语法方向跑了,可以说之前我仅仅是对,pyth ...
- vue源码分析—模板解析
福建省啦剑飞傻了剑飞撒到了看风景啊撒:
- 转://Oracle A用户给B用户授权查询指定表或视图权限方案
用DNINMSV31账户登录数据库进行如下操作: CREATE USER NORTHBOUND IDENTIFIED BY NORTHBOUND DEFAULT TABLESPACE "TB ...
- hyperledge工具-cryptogen
参考:http://baijiahao.baidu.com/s?id=1596614770784685300&wfr=spider&for=pc cryptogen是Hyperledg ...
- Django:安装和启动
最近在学习利用python语言进行web站点开发,使用的框架是Django.这篇博客主要介绍Django的安装和简单使用. 一.Django介绍 Django是一个开源的Web应用框架,由Python ...
- 典型分布式系统分析:Bigtable
本文是典型分布式系统分析的第三篇,分析的是Bigtable,一个结构化的分布式存储系统. Bigtable作为一个分布式存储系统,和其他分布式系统一样,需要保证可扩展.高可用与高性能.与此同时,Big ...