POJ P1422 Air Raid
来源:互联网 发布:怎么查网络丢包率 编辑:程序博客网 时间:2024/05/23 19:31
题目大意:
定义:
一个不含圈的有向图G中,G的一个路径覆盖是一个其结点不相交的路径集合P,图中的每一个结点仅包含于P中的某一条路径。路径可以从任意结点开始和结束,且长度也为任意值,包括0。请你求任意一个不含圈的有向图G的最小路径覆盖数。
数据有T组,每组给出N个顶点,M条边,分别求出最小路径覆盖数。
n<=120
题解:
根据定理:
最小路径覆盖数=G的定点数-最小路径覆盖中的边数
最小路径覆盖数=原图G的顶点数-二分图的最大匹配数
跑匈牙利找出最大匹配数然后用N减去即可。
代码:
var map:array [0..151,0..151] of boolean; cover:array [0..151] of boolean; link:array [0..151] of longint; ans,x,y,i,n,m,t:longint;function find(x:longint):boolean;var q,i:longint;begin for i:=1 to n do if (map[x,i]) and (not(cover[i])) then begin q:=link[i]; link[i]:=x; cover[i]:=true; if (q=0) or (find(q)) then exit(true); link[i]:=q; end; exit(false);end;begin readln(t); while t>=1 do begin readln(n); readln(m); fillchar(map,sizeof(map),false); fillchar(link,sizeof(link),0); for i:=1 to m do begin readln(x,y); map[x,y]:=true; end; ans:=0; for i:=1 to n do begin fillchar(cover,sizeof(cover),false); if find(i) then inc(ans); end; writeln(n-ans); dec(t); end;end.
阅读全文
1 0
- POJ P1422 Air Raid
- Air Raid (P1422)
- POJ 1422 Air Raid
- poj 1422Air Raid
- poj 1422 Air Raid
- POJ 1422 Air Raid
- POJ-1422-Air Raid
- POJ 1422 Air Raid
- POJ 1422 Air Raid
- POJ 1422 Air Raid
- poj 1422 Air Raid
- poj 1422 Air Raid
- POJ 1422 Air Raid
- poj 1422 Air Raid
- 【POJ 1151】Air Raid
- POJ 1422 Air Raid
- poj 1422 Air Raid
- POJ 1422 Air Raid
- BZOJ1002 [FJOI2007]轮状病毒
- yii 邮件发送
- 关于真机测试时INSTALL_FAILED_USER_RESTRICTED安装错误的问题
- linux安装常用软件(二)
- Mybatis+mySQL动态分页查询数据经典案例
- POJ P1422 Air Raid
- 【算法】大数据与空间限制
- 使用yii AR 完成单个表的CURD操作
- 剑指offer 编程题(31):把数组排成最小的数返回string
- 数据结构实验之排序三:bucket sort
- 第一次使用GIT,创建仓库并提交项目代码
- 死锁
- 图解http笔记-3(HTTP状态码)
- 懒加载常用的两种方式