연결 컴포넌트(DFS)

3247 단어 문제풀이dfs
제목:
Description
그림의 연결 분량을 구하다
Input
n 톱 포인트 수(<=100) 모서리
Output
연통분량
Sample Input
5 1 2 3 4 2 3 0 0
Sample Output
4
저자의 사고방식: dfs, 한 점부터 검색하면 s>ans then ans:=s;이 문제는 입력이 지독하구나!
코드:
var a:array[0..101,0..101] of shortint;
    ans,n,s,i:longint;
    f:array[0..101] of boolean;
procedure init;
var i,j,x,y:longint;
begin
  read(n);
  {for i:=1 to n-1 do
  begin
    read(x,y);
    a[x,y]:=1;
    a[y,x]:=1;
  end;}
  while (x<>0)and(y<>0) do
  begin
    read(x,y);
    a[x,y]:=1;
    a[y,x]:=1;
  end;
  fillchar(f,sizeof(f),true);
end;
procedure dfs(x:longint);
var i:longint;
begin
  for i:=1 to n do
    if (i<>x)and(a[x,i]=1)and f[i] then
    begin
      inc(s); if ansthen ans:=s;
      f[i]:=false; f[x]:=false;
      dfs(i);
    end;
end;
begin
  init;
  ans:=1;
  for i:=1 to n do
  if f[i] then
  begin
  s:=1;
  dfs(i);
  if s>ans then ans:=s;
  end;
  write(ans);
end.

좋은 웹페이지 즐겨찾기