您的位置:首页 > 其它

bzoj3632

2015-06-30 10:28 344 查看
裸的最大团,随机化大法好

多次随机出一个选择顺序然后贪心即可

var b:array[0..51,0..51] of boolean;
a:array[0..51] of longint;
v:array[0..51] of boolean;
n,m,i,j,x,y,ans:longint;

procedure swap(var a,b:longint);
var c:longint;
begin
c:=a;
a:=b;
b:=c;
end;

procedure work;
var i,j,s:longint;
begin
s:=0;
fillchar(v,sizeof(v),false);
for i:=1 to n do
if not v[a[i]] then
begin
v[a[i]]:=true;
for j:=i+1 to n do
if not b[a[i],a[j]] then v[a[j]]:=true;
inc(s);
end;
if ans<s then ans:=s;
end;

begin
readln(n);
while not eof do
begin
readln(x,y);
b[x,y]:=true;
b[y,x]:=true;
end;
for i:=1 to n do
a[i]:=i;
work;
for i:=1 to 15000 do
begin
for j:=2 to n do
swap(a[j],a[trunc(random*j)+1]);
work;
end;
writeln(ans);
end.


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