您的位置:首页 > 其它

ZJOI2007矩阵游戏

2014-06-20 16:02 225 查看
我们应该通过思考得到这样一个性质:如果一个点被选了,那么与它同行同列的点都不能选

然后就是裸的二分图匹配了……

(我应该能想出这道题来的,可是看了看题觉得没思路就去看题解了,唉……以后这种水题自己一定要动脑想想!)

代码:这种水题应该1A吧

var i,j,n,t:longint;
flag:boolean;
p:array[0..250] of longint;
v:array[0..250] of boolean;
a:array[0..250,0..250] of longint;
function find(x:longint):boolean;
var i:longint;
begin
for i:=1 to n do
if (not(v[i])) and (a[x,i]=1) then
begin
v[i]:=true;
if (p[i]=0) or (find(p[i])) then
begin
p[i]:=x;
exit(true);
end;
end;
exit(false);
end;
procedure init;
begin
readln(n);
fillchar(p,sizeof(p),0);
for i:=1 to n do
begin
for j:=1 to n do read(a[i,j]);
readln;
end;
end;
procedure main;
begin
flag:=true;
for i:=1 to n do
begin
fillchar(v,sizeof(v),false);
if not(find(i)) then begin flag:=false;break;end;
end;
if flag then writeln('Yes') else writeln('No');
end;

begin
readln(t);
while t>0 do
begin
dec(t);
init;
main;
end;
end.


View Code
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: