| ||||||||||
| Online Judge | Problem Set | Authors | Online Contests | User | ||||||
|---|---|---|---|---|---|---|---|---|---|---|
| Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest | |||||||||
poj2117pascaltype
rec=record
y,nx:longint;
end;
var
n,m,i,u,v,nx,ans,d,t,rs,tt:longint;
q:array[-1..500050] of rec;
vs:array[-1..10050] of 0..2;
low,dfn,sws,h:array[-1..10050] of longint;
function min(x,y:longint):longint;
begin
if x<y then exit(x)
else exit(y);
end;
procedure dfs(u,fa,dp:longint);
var
i,v,sm:longint;
begin
i:=h[u];sm:=0;low[u]:=dp;dfn[u]:=dp;vs[u]:=1;
while i>0 do
begin
v:=q[i].y;
if (vs[v]=1) and (v<>fa) then low[u]:=min(low[u],dfn[v]);
if vs[v]=0 then
begin
inc(sm);
dfs(v,u,dp+1);
low[u]:=min(low[u],low[v]);
if ((u=d) and (sm>1)) or ((u<>d) and (low[v]>=dfn[u])) then inc(sws[u]);
end;
i:=q[i].nx;
end;
vs[u]:=2;
end;
begin
while not eof do
begin
readln(n,m);
if (n=0) and (m=0) then break;
dec(n);
fillchar(vs,sizeof(vs),0);
fillchar(sws,sizeof(sws),0);
fillchar(dfn,sizeof(dfn),0);
fillchar(h,sizeof(h),255);
rs:=0;
for i:=1 to m do
begin
readln(u,v);
inc(rs);q[rs].y:=v;q[rs].nx:=h[u];h[u]:=rs;
inc(rs);q[rs].y:=u;q[rs].nx:=h[v];h[v]:=rs;
end;
tt:=0;
for i:=0 to n do
if vs[i]=0 then
begin
d:=i;
inc(tt);dfs(i,-1,1);
end;
ans:=0;
for i:=0 to n do
if sws[i]>ans then ans:=sws[i];
if tt>n then writeln(n)
else writeln(ans+tt);
end;
end.
Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator