POJ-2060 Taxi Cab Scheme 最小路径覆盖
2012-11-18 00:51
369 查看
题目链接:http://poj.org/problem?id=2060
当时一看的题目,就想到用贪心搞,于是马上敲之,后来发现还是不行啊,比如4->2->3 1->2->3 1->5,有这样几条路径,然后贪心可能会出现这种结果:4->2->3 1 5,那么答案就是3了,但是这里显然答案是2啊!
然后就建图了,猛然发现是最小路径覆盖:把每条路径看做点集合,然后taxi能合法到达的建立边。题目要用最少的车,那么就是用最少的路径把图中的所用点覆盖了,即n-最大匹配数即可。
当时一看的题目,就想到用贪心搞,于是马上敲之,后来发现还是不行啊,比如4->2->3 1->2->3 1->5,有这样几条路径,然后贪心可能会出现这种结果:4->2->3 1 5,那么答案就是3了,但是这里显然答案是2啊!
然后就建图了,猛然发现是最小路径覆盖:把每条路径看做点集合,然后taxi能合法到达的建立边。题目要用最少的车,那么就是用最少的路径把图中的所用点覆盖了,即n-最大匹配数即可。
//STATUS:G++_AC_141MS_1708KB #include<stdio.h> #include<stdlib.h> #include<string.h> #include<math.h> #include<iostream> #include<string> #include<algorithm> #include<vector> #include<queue> #include<stack> #include<map> using namespace std; #define LL long long #define Max(a,b) ((a)>(b)?(a):(b)) #define Min(a,b) ((a)<(b)?(a):(b)) #define mem(a,b) memset(a,b,sizeof(a)) #define lson l,mid,rt<<1 #define rson mid+1,r,rt<<1|1 const int MAX=510,INF=200000000; int vis[MAX],y[MAX],g[MAX][MAX]; int T,n; struct Node{ int t,x1,y1,x2,y2; }nod[MAX]; int dfs(int u) { int v; for(v=0;v<n;v++){ if(g[u][v] && !vis[v]){ vis[v]=1; if(y[v]==-1 || dfs(y[v])){ y[v]=u; return 1; } } } return 0; } int main() { // freopen("in.txt","r",stdin); int i,j,ans; char s[8]; scanf("%d",&T); while(T--) { ans=0; mem(g,0); mem(y,-1); scanf("%d",&n); for(i=0;i<n;i++){ scanf("%s%d%d%d%d",s,&nod[i].x1,&nod[i].y1,&nod[i].x2,&nod[i].y2); nod[i].t=((s[0]-'0')*10+(s[1]-'0'))*60+((s[3]-'0')*10+(s[4]-'0')); } for(i=0;i<n;i++){ for(j=0;j<n;j++){ if(i!=j && nod[i].t+abs(nod[i].x1-nod[i].x2)+abs(nod[i].y1-nod[i].y2) +abs(nod[i].x2-nod[j].x1)+abs(nod[i].y2-nod[j].y1)+1<=nod[j].t) g[i][j]=1; } } for(i=0;i<n;i++){ mem(vis,0); if(dfs(i))ans++; } printf("%d\n",n-ans); } return 0; }
相关文章推荐
- poj2060——Taxi Cab Scheme(最小路径覆盖)
- poj2060 Taxi Cab Scheme 最小路径覆盖=顶点数-最大匹配数
- poj 2060 Taxi Cab Scheme(DAG图的最小路径覆盖)
- 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 DAG最小路径覆盖
- POJ2060 Taxi Cab Scheme【二分图最小路径覆盖】
- UVA-1201 - Taxi Cab Scheme(POJ-2060)--DAG的最小路径覆盖
- POJ 2060 Taxi Cab Scheme【最小路径覆盖】
- POJ 2060 Taxi Cab Scheme【最小路径覆盖】
- POJ 2060 Taxi Cab Scheme(最小路径覆盖)
- HDU 1350 & HDU 1960 & POJ 2060 Taxi Cab Scheme【二分图之最小路径覆盖,经典】
- POJ 2060 Taxi Cab Scheme(匈牙利—最小路径覆盖)
- POJ 2060 Taxi Cab Scheme (最小路径覆盖)
- POJ2060 Taxi Cab Scheme [最小路径覆盖]
- poj 2060 Taxi Cab Scheme (最小路径覆盖)
- POJ2060-Taxi Cab Scheme (最小路径覆盖)