POJ 2060 Taxi Cab Scheme DAG最小路径覆盖
2014-07-16 00:21
330 查看
题意:用出租车去接客人,已经每个客人的出发时间,出发地点和目的地,你的任务是用尽量少的出租车去送他们,使得每次能提前一分钟到达他所在的位置。注意,为了满足条件,要么这位客人是这辆出租车接送的第一个客人,要么在接送完上一个客人后,有足够的时间从上一个目的地开到这里。
分析:本题就是一个DAG的最小路径覆盖。假设从X点出发的出租车还可以到达Y,则连一条边X-Y,则就是求构图后的最小路径覆盖。
代码:
分析:本题就是一个DAG的最小路径覆盖。假设从X点出发的出租车还可以到达Y,则连一条边X-Y,则就是求构图后的最小路径覆盖。
代码:
#pragma comment(linker,"/STACK:102400000,102400000") #include <iostream> #include <string.h> #include <stdio.h> #include <algorithm> #include <vector> #include <string> #include <math.h> #include <queue> #include <stack> #include <map> #include <set> using namespace std; typedef long long ll; //记得必要的时候改成无符号 const int INF=1000000000; const int maxn=1005; const int maxm=1000005; struct Edgenode { int to; int next; }edge[maxm]; int head[maxn],cnt; void add(int x,int y) { edge[cnt].to=y; edge[cnt].next=head[x]; head[x]=cnt++; } void init() { cnt=0; memset(head,-1,sizeof(head)); } int n,m,v[maxn],pre[maxn]; bool dfs(int x) { int y; for(int i=head[x];i!=-1;i=edge[i].next) { y=edge[i].to; if(!v[y]){ v[y]=1; if(!pre[y]||dfs(pre[y])){ pre[y]=x; return true; } } } return false; } int erfenpipei() { int sum=0; memset(pre,0,sizeof(pre)); for(int i=1;i<=n;i++){ memset(v,0,sizeof(v)); if(dfs(i))sum++; } return sum; } struct q { int a,b; int x1,y1,x2,y2; }a[maxn]; int pd(q a,q b) { int s,t; if(a.a>b.a)return 0; if(a.a==b.a&&a.b>b.b)return 0; s=a.a*60+a.b+abs(a.x1-a.x2)+abs(a.y1-a.y2); s+=abs(a.x2-b.x1)+abs(a.y2-b.y1); t=b.a*60+b.b; if(s+1<=t)return 1; return 0; } int main() { int T,i,j; scanf("%d",&T); while(T--){ scanf("%d",&n); init(); for(i=1;i<=n;i++) scanf("%d:%d %d %d %d %d",&a[i].a,&a[i].b,&a[i].x1,&a[i].y1,&a[i].x2,&a[i].y2); for(i=1;i<=n;i++){ for(j=1;j<=n;j++){ if(i==j)continue; if(pd(a[i],a[j])) add(i,j); } } printf("%d\n",n-erfenpipei()); } return 0; }
相关文章推荐
- UVA-1201 - Taxi Cab Scheme(POJ-2060)--DAG的最小路径覆盖
- POJ2060 Taxi Cab Scheme [最小路径覆盖]
- poj 2060 Taxi Cab Scheme 最小路径覆盖
- POJ 2060 Taxi Cab Scheme (最小路径覆盖)
- POJ 2060 Taxi Cab Scheme(匈牙利—最小路径覆盖)
- POJ2060-Taxi Cab Scheme (最小路径覆盖)
- Poj-2060 Taxi Cab Scheme 二分图最小路径覆盖
- POJ:2060-Taxi Cab Scheme(最小路径覆盖)
- 【二分图+最小路径覆盖+注释】北大 poj 2060 Taxi Cab Scheme
- POJ-2060-Taxi Cab Scheme-最小路径覆盖
- poj 2060 Taxi Cab Scheme(DAG图的最小路径覆盖)
- HDU 1350 & HDU 1960 & POJ 2060 Taxi Cab Scheme【二分图之最小路径覆盖,经典】
- POJ2060 Taxi Cab Scheme【二分图最小路径覆盖】
- poj2060 Taxi Cab Scheme 最小路径覆盖=顶点数-最大匹配数
- 二分图最小路径覆盖--poj2060 Taxi Cab Scheme
- POJ-2060 Taxi Cab Scheme 最小路径覆盖
- poj2060——Taxi Cab Scheme(最小路径覆盖)
- poj 2060 Taxi Cab Scheme (最小路径覆盖)
- POJ_2060_Taxi Cab Scheme【最小路径覆盖】
- POJ 2060 Taxi Cab Scheme(最小路径覆盖)