POJ2060
来源:互联网 发布:华为 5g 知乎 编辑:程序博客网 时间:2024/06/07 06:05
Problem : Taxi Cab Scheme
Description : 出租车接客,每个订单都有出行时间,出发地址,目的地址。一辆出租车在保证乘客能在规定的出发时间之前出发,那么这辆出租车就能接下多单。现在问你最少要多少台出租车才能完成所有的订单。
Solution : 二分图的最小路径覆盖。这是我的第一道最小路径覆盖。主要是学习了建图和最小路径覆盖的基本思想和意义,我分别讲下建图和最小路径覆盖的思想。最小路径覆盖的思想–用最少的路径来覆盖所有的顶点,且路径不能有交点。如果你能理解
Code(C++) :
#include <stdio.h>#include <string.h>#include <iostream>#include <string>#include <vector>#define ABS(a) ((a)>0? (a):(-(a)))using namespace std;const int F=500+25;typedef struct tagNode{ int h,s; int a,b,c,d; tagNode(){} tagNode(int H,int S,int A,int B,int C,int D): h(H),s(S),a(A),b(B),c(C),d(D){}}Node;int n;vector<int> edge[F];bool used[F];int belong[F];Node line[F];bool dfs(int s){ for(int i=0;i<edge[s].size();i++){ int end=edge[s].at(i); if(used[end]) continue; used[end]=true; if(belong[end]==-1||dfs(belong[end])){ belong[end]=s; return true; } } return false;}int main(){ //freopen("in.data","r",stdin); int N; cin>>N; while(N--){ for(int i=0;i<F;i++) edge[i].clear(); memset(belong,-1,sizeof(belong)); cin>>n; int h,s,a,b,c,d; for(int i=1;i<=n;i++) scanf("%d:%d%d%d%d%d",&h,&s,&a,&b,&c,&d), line[i]=Node(h,s,a,b,c,d); for(int i=1;i<n;i++) for(int j=i+1;j<=n;j++) if(60*line[i].h+line[i].s+ABS(line[i].a-line[i].c)+ABS(line[i].b-line[i].d)+ABS(line[i].c-line[j].a)+ABS(line[i].d-line[j].b)<60*line[j].h+line[j].s) edge[i].push_back(j); int sum=0; for(int i=1;i<=n;i++){ memset(used,false,sizeof(used)); if(dfs(i)) ++sum; } printf("%d\n",n-sum); } return 0;}
0 0
- POJ2060
- poj2060
- POJ2060 Taxi Cab Scheme
- poj2060 最小路径覆盖
- poj2060 - Taxi Cab Scheme
- poj2060最小路径覆盖
- poj2060 Taxi Cab Scheme
- POJ2060最小路径覆盖
- 【POJ2060】Taxi Cab Scheme
- POJ2060 Taxi Cab Scheme [最小路径覆盖]
- 【二分匹配】 poj2060 Taxi Cab Scheme
- 二分图最小路径覆盖--poj2060
- poj2060 Taxi Cab Scheme 最小路径覆盖
- POJ2060 Taxi Cab Scheme(最小路径覆盖)
- POJ2060 Taxi Cab Scheme【二分图最小路径覆盖】
- poj2060——Taxi Cab Scheme(最小路径覆盖)
- poj2060 Taxi Cab Scheme 最小路径覆盖=顶点数-最大匹配数
- 二分图变种之最小路径覆盖、最小点覆盖集【poj3041】【poj2060】
- 写作参考站
- iptables只允许指定ip访问本机的指定端口
- Spring初识
- Compareble 接口与Comparator接口使用示例
- SlidingMenu和Listview冲突解决方案
- POJ2060
- CentOS里yum命令详解
- LeetCode—376. Wiggle Subsequence
- 欢迎使用CSDN-markdown编辑器
- xml解析返回list<map>
- JS代码简洁之道
- Android线程,线程池使用及原理博文参考
- 括号配对
- 笔记5 LruCache