poj 2060 Taxi Cab Scheme 最小路径覆盖

//二分匹配的最小路径覆盖

//对于第i次ride,如果在第i次ride结束后还能在第j次ride出发前赶到第j次的出发点

//那么i到j就有一条边

//根据最小路径覆盖 = N - 最大匹配即可得到答案

#include<iostream>

#include<cstdio>

#include<cstring>

#include<cstdlib>

using namespace std;

const int maxn  = 510;

int line[maxn][maxn];

int match[maxn] ;

int vis[maxn] ;

int N;

int find(int start)

{

for(int i = 1 ; i <= N ; i++)

{

if(!vis[i] && line[start][i])

{

vis[i] = 1;

if(match[i] == -1 || find(match[i]))

{

match[i] = start ;

return 1;

}

}

}

return 0;

}

void Match()

{

memset(match , -1 ,sizeof(match)) ;

int ans = 0;

for(int i = 1 ; i <= N ;i++)

{

memset(vis, 0 ,sizeof(vis));

if(find(i))

ans ++ ;

}

printf("%d\n", N-ans);

}

struct node

{

int time_st;

int time_en;

int a,b,c,d;

}ride[maxn];

int main()

{

//freopen("in.txt" , "r" ,stdin);

int T;

scanf("%d", &T);

int h , m ;

while(T--)

{

memset(line, 0 ,sizeof(line));

scanf("%d", &N);

for(int i = 1 ; i <= N ;i++)

{

scanf("%d:%d",&h ,&m);

// cout<<h<<" "<<m<<endl;

ride[i].time_st = 60*h + m;

scanf("%d %d %d %d" , &ride[i].a ,&ride[i].b,&ride[i].c,&ride[i].d);

ride[i].time_en = abs(ride[i].a-ride[i].c) + abs(ride[i].b-ride[i].d) + ride[i].time_st;

for(int j = 1 ; j <= i ;j++)

{

int temp_1 = abs(ride[j].a-ride[i].c) + abs(ride[j].b-ride[i].d);

int temp_2 = abs(ride[i].a-ride[j].c) + abs(ride[i].b-ride[j].d);

if(ride[i].time_en+temp_1 < ride[j].time_st)

line[i][j] = 1;

else if(ride[j].time_en+temp_2 < ride[i].time_st)

line[j][i] = 1;

}

}

Match();

}

return 0;

}

时间: 2025-01-05 06:17:07

poj 2060 Taxi Cab Scheme 最小路径覆盖的相关文章

UVALive3126 Taxi Cab Scheme —— 最小路径覆盖

题目链接:https://vjudge.net/problem/UVALive-3126 题解: 代码如下: 1 #include <iostream> 2 #include <cstdio> 3 #include <cstring> 4 #include <cstdlib> 5 #include <string> 6 #include <vector> 7 #include <map> 8 #include <se

hdu1350Taxi Cab Scheme (最小路径覆盖)

Taxi Cab Scheme Time Limit: 20000/10000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 712 Accepted Submission(s): 337 Problem Description Running a taxi station is not all that simple. Apart from the obvious demand f

poj 2060 Taxi Cab Scheme (二分匹配)

Taxi Cab Scheme Time Limit: 1000MS   Memory Limit: 30000K Total Submissions: 5710   Accepted: 2393 Description Running a taxi station is not all that simple. Apart from the obvious demand for a centralised coordination of the cabs in order to pick up

POJ 2060 Taxi Cab Scheme【最小路径覆盖】

T - Taxi Cab Scheme Time Limit:1000MS     Memory Limit:30000KB     64bit IO Format:%I64d & %I64u Submit Status Practice POJ 2060 Appoint description:  System Crawler  (2014-08-22) Description Running a taxi station is not all that simple. Apart from

poj 2060 Taxi Cab Scheme(DAG图的最小路径覆盖)

题意: 出租车公司有M个订单. 订单格式:     hh:mm  a  b  c  d 含义:在hh:mm这个时刻客人将从(a,b)这个位置出发,他(她)要去(c,d)这个位置. 规定1:从(a,b)到(c,d)所花的时间为:abs(a-c)+abs(b-d). 规定2:一辆出租车如果要接单,必须在客人出发前1分钟(包括)以前接单. 问,最少派出多少辆出租车,可以完成所有任务. 思路: 把每一笔单看成一个点,如果完成第i个单后可以接到第j个单,则 i->j连上线. 则题为:求这个DAG图的最小路

POJ - 2060 Taxi Cab Scheme 二分图 最小路径覆盖

题目大意:有n项任务,给出每项任务的出发时间,出发地点和目的地. 当一个任务完成之后,如果 当前时间 + 到达另一个任务的出发地的时间 <= 另一个任务的出发时间 - 1 的话,那么就可以让这个人接下去完成这个任务了 问至少需要派多少人才可以完成任务 解题思路:这题和 poj-3216 Repairing Company很像 两个点集都是任务,如果一个任务完成了可以接下来完成另一个任务的话,那么这两个任务之间就存在关系了,这样二分图就建成了 因为要把所有的任务都完成,也就是说要覆盖所有点,这就变

POJ 2594 Treasure Exploration(最小路径覆盖变形)

POJ 2594 Treasure Exploration 题目链接 题意:有向无环图,求最少多少条路径能够覆盖整个图,点能够反复走 思路:和普通的最小路径覆盖不同的是,点能够反复走,那么事实上仅仅要在多一步.利用floyd求出传递闭包.然后依据这个新的图去做最小路径覆盖就可以 代码: #include <cstdio> #include <cstring> #include <vector> #include <algorithm> using names

poj 1422 Air Raid (最小路径覆盖)

链接:poj 1422 题意:有n个点和m条有向边,现在要在点上放一些伞兵,伞兵可以沿着图走, 直到不能走为止,每条边有且仅有一个伞兵走过,问最少放多少个伞兵 思路:求的最小路径覆盖,用二分图来做 对于这样的一个有向图做最小路径覆盖,首先建图 然后每一条有向边对应左边的点指向右边的点 这样建好图之后求最大匹配数 最小路径覆盖=点数-最大匹配数 [cpp] view plaincopyprint? #include<stdio.h> #include<string.h> int n,

POJ 2594 —— Treasure Exploration——————【最小路径覆盖、可重点、floyd传递闭包】

Treasure Exploration Time Limit:6000MS     Memory Limit:65536KB     64bit IO Format:%I64d & %I64u Submit Status Practice POJ 2594 Description Have you ever read any book about treasure exploration? Have you ever see any film about treasure exploratio