poj 2060
来源:互联网 发布:电脑串口测试软件 编辑:程序博客网 时间:2024/05/23 01:12
最小路径覆盖练习
出租车……
两点之间可以在时间内到达就连一条边。
建图好后就是裸的了。
#include <iostream>#include <cstdio>#include <cstring>using namespace std;int _map[505][505];int t,num;int mark[1000],link[1000];struct book{ int st,et,a,b,c,d;}bo[1000];int _abs(int a,int b){ return a>b?a-b:b-a;}void print(int l){ for(int i=0;i<l;i++) { for(int j=0;j<l;j++) { printf("%d ",_map[i][j]); } printf("\n"); }}void build(){ for(int i=0;i<t;i++) { for(int j=0;j<t;j++) { if(bo[i].et+_abs(bo[i].c,bo[j].a)+_abs(bo[i].d,bo[j].b)<bo[j].st) { _map[i][j]=1;// _map[j][i]=1; } } }}void init(){ for(int i=0;i<t;i++) { for(int j=0;j<t;j++) { _map[i][j]=0; } } for(int i=0;i<t;i++) { mark[i]=0; link[i]=-1; } build(); num=0;}int dfs(int k){// printf("%d\n"k) for(int i=0;i<t;i++) { if(_map[k][i]&&!mark[i]) { mark[i]=1; if(link[i]==-1||dfs(link[i])) {// printf("k=%d,i=%d",k,i); link[i]=k; return 1; } } } return 0;}void minpath(){ for(int i=0;i<t;i++) { memset(mark ,0,sizeof(mark)); if(dfs(i)) { num++; } }}int main(){// freopen("in","r",stdin); int n; cin>>n; while(n--) { scanf("%d",&t); for(int i=0;i<t;i++) { int st1,st2,a,b,c,d; scanf("%d:%d%d%d%d%d",&st1,&st2,&a,&b,&c,&d); bo[i].a=a; bo[i].b=b; bo[i].c=c; bo[i].d=d; bo[i].st=st1*60+st2; bo[i].et=bo[i].st+_abs(a,c)+_abs(b,d); } init();// print(t); minpath(); printf("%d\n",t-num); } return 0;}
0 0
- poj 2060
- POJ 2060
- poj 2060
- POJ 2060
- poj 2060 二分匹配
- POJ
- poj
- POJ
- POJ
- poj
- poj
- POJ
- POJ
- poj
- POJ
- POJ
- POJ
- POJ
- 一名好的游戏运营需要具备哪些素质和技能?
- Android ANR日志粗略分析
- ps实现雷达扫描效果
- POJ3292 Semi-prime H-numbers 素数筛选
- 华为面试题算什么,这个背会了外企随便进
- poj 2060
- wiki 1157 2k进制数
- Git学习日记1
- 数据库,规则库和知识库的比较
- ZOJ-1152
- 跟我一起学extjs5(19--模块记录的拖放删除、拖放复制新增)
- DAG上的动态规划
- 黑马程序员--学习日记(六)IO流(二)
- timer中断代码不对导致的错误