Taxi Cab Scheme UVALive - 3126 最小路径覆盖解法(必须是DAG,有向无环图) = 结点数-最大匹配
/**
题目:Taxi Cab Scheme UVALive - 3126 最小路径覆盖解法(必须是DAG,有向无环图) = 结点数-最大匹配
链接:https://vjudge.net/problem/UVALive-3126
题意:lv lrj训练指南P357 思路:最小路径覆盖(必须是DAG,有向无环图) = 结点数-最大匹配
最小路径覆盖:就是在图中找尽量少的路径,使得每个节点恰好在一条路径上(不同的路径不能有公共点),单独的结点也可以作为一条路径。 时间是一个天然的序,因此可以构图G如下:每个客人是一个节点,如果同一个出租车在接完客人u以后还来得及接客人v.连边 u->v。不难发现这是一个DAG。
并且它的最小路径覆盖就是本题的答案。 DAG最小路径覆盖的解法如下:把所有结点拆为X结点i和Y结点i',如果图G中存在有向边i->j,那么则在二分图中引入i->j'。设二分图的最大匹配数是m,则结果就是
n-m; 这里的n不是拆点之后的点数,而是原先的G图点数。 */ #include<iostream>
#include<cstdio>
#include<algorithm>
#include<map>
#include<vector>
#include<cmath>
#include<queue>
#include<set>
#include<cstring>
using namespace std;
const int MAXN = ;
int f[MAXN][MAXN];
int vit[MAXN], S[MAXN], T[MAXN];
int N;
///模板
bool Find(int x)///走交替路,寻找增广路
{
for(int i = ; i <= N; i++){///n表示右侧点数。
if(f[x][i]&&vit[i]==){
vit[i] = ;
if(T[i]==||Find(T[i])){
T[i] = x;///右边第i个点和左边第x个点匹配成功。
S[x] = i;///左边第x个点和右边第i个点匹配成功。
return true;
}
}
}
return false;
}
struct node
{
int sx, sy;
int ex, ey;
int hour, minute;
int time;
}client[MAXN];
int main()
{
int n, m, k;
cin>>k;
while(k--){
scanf("%d",&n);
N = n*;
for(int i = ; i <= n; i++){
scanf("%d:%d%d%d%d%d",&client[i].hour,&client[i].minute,&client[i].sx,&client[i].sy,&client[i].ex,&client[i].ey);
client[i].time = client[i].hour*+client[i].minute+abs(client[i].sx-client[i].ex)+abs(client[i].sy-client[i].ey);
}
memset(f, , sizeof f);
for(int i = ; i <= n; i++){///拆点x, x,x+n;
for(int j = ; j <= n; j++){
if(i==j) continue;
if(client[i].time+abs(client[i].ex-client[j].sx)+abs(client[i].ey-client[j].sy)+<=client[j].hour*+client[j].minute){
f[i][j+n] = ;
}
}
} int ans = ;
memset(T, , sizeof T);
memset(S, , sizeof S);
///模板
for(int i = ; i <= N; i++){
memset(vit, , sizeof vit);
if(Find(i)) ans++;
}
printf("%d\n",n-ans);
}
return ;
}
Taxi Cab Scheme UVALive - 3126 最小路径覆盖解法(必须是DAG,有向无环图) = 结点数-最大匹配的更多相关文章
- P2764 最小路径覆盖问题(网络流24题之一)
题目描述 «问题描述: 给定有向图G=(V,E).设P 是G 的一个简单路(顶点不相交)的集合.如果V 中每个顶点恰好在P 的一条路上,则称P是G 的一个路径覆盖.P 中路径可以从V 的任何一个顶点开 ...
- 刷题总结——魔术球问题(ssoj最小路径覆盖+网络流)
题目: 题目描述 假设有 n 根柱子,现要按下述规则在这 n 根柱子中依次放入编号为 1,2 ,3,… 的球.(1)每次只能在某根柱子的最上面放球.(2)在同一根柱子中,任何 2 个相邻球的编号之和为 ...
- POJ1422 最小路径覆盖
题意: 一个战场,往战场上投放伞兵,每个伞兵不能后退,只能往前走,问你最少多少个伞兵可以吧所有的点都占领. 思路: 这个题是最小路径覆盖,最小路径覆盖 = n - 最大匹配数,首先 ...
- 训练指南 UVALive - 3126(DAG最小路径覆盖)
layout: post title: 训练指南 UVALive - 3126(DAG最小路径覆盖) author: "luowentaoaa" catalog: true mat ...
- Light OJ 1429 Assassin`s Creed (II) BFS+缩点+最小路径覆盖
题目来源:Light OJ 1429 Assassin`s Creed (II) 题意:最少几个人走全然图 能够反复走 有向图 思路:假设是DAG图而且每一个点不能反复走 那么就是裸的最小路径覆盖 如 ...
- HDU 3861 The King’s Problem 最小路径覆盖(强连通分量缩点+二分图最大匹配)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3861 最小路径覆盖的一篇博客:https://blog.csdn.net/qq_39627843/ar ...
- POJ Treasure Exploration 【DAG交叉最小路径覆盖】
传送门:http://poj.org/problem?id=2594 Treasure Exploration Time Limit: 6000MS Memory Limit: 65536K To ...
- UVaLive 3126 Taxi Cab Scheme (最小路径覆盖)
题意:有 n 个客人,要从 si 到 ti,每个人有一个出发时间,现在让你安排最少和出租车去接,在接客人时至少要提前一分钟到达客人的出发地点. 析:把每个客人看成一个结点,然后如果用同一个出租车接的话 ...
- 【HDU1960】Taxi Cab Scheme(最小路径覆盖)
Taxi Cab Scheme Time Limit: 5000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)T ...
随机推荐
- scrapy爬虫框架实例二
本实例主要通过抓取慕课网的课程信息来展示scrapy框架抓取数据的过程. 1.抓取网站情况介绍 抓取网站:http://www.imooc.com/course/list 抓取内容:要抓取的内容是全部 ...
- Mac 清除/修改SSH的私钥密码
我之前在Mac下用命令ssh-keygen生成密钥,并且安全起见为密钥设置了密码,这样导致后来每次我git push时,都要输入一次密码: Enter pass phrase for /Users/z ...
- 解决python pymysql.err.OperationalError: (2013, 'Lost connection to MySQL server during query')
解决python pymysql.err.OperationalError: (2013, 'Lost connection to MySQL server during query') 学习了:ht ...
- MYSQL存储过程及事件
关于mysql下的存储过程以及事件的创建 以下这个存储过程主要实现的功能就是查询表里面半年前的数据,假设有就存到文件.然后将数据删除. CREATE DEFINER = `root`@`localho ...
- 处理SecureCRT中使用vim出现中文乱码的问题
在工作中经常需要使用到SecureCRT登录到linux环境去做一些文本处理的工作,因此就经常会遇到一些乱码问题,尤其是编辑的内容包含较多中文的情形,下面就是遇到类似问题的解决办法.LANG=POSI ...
- 求字符串A与字符串B的最长公共字符串(JAVA)
思路:引入一个矩阵的思想,把字符串A(长度为m)当成矩阵的行,把字符串B(长度为n)当矩阵的列.这样就构成一个m*n的矩阵.若该矩阵的节点相应的字符同样,即m[i]=n[j]时.该节点值为1:当前字符 ...
- array_intersect_assoc用法详解
最近在做考试系统,想到这个数组函数,用法如下: <?php $a1=array('a','b','d','c','d','b','c','a'); $a2=array('b','d','d',' ...
- taro 请求函数封装
1.项目目录 2.代码 app/src/service/api.js import Taro from '@tarojs/taro' import { HTTP_STATUS } from '../c ...
- CSS3文本溢出
text-overflow: text-overflow:clip | ellipsis; clip:剪切多余的文字. ellipsis:文本溢出时显示省略标记. 要实现文本溢出剪切显示省略标记,还需 ...
- OpenERP|ODOO高德地图应用
发布时间:2015-04-06 11:01:37来源:http://www.chinamaker.net 在openerp中的fleet模块,每一个车辆都有地图应用.默认采用的是谷歌地图,但是在应用得 ...