本文共 2127 字,大约阅读时间需要 7 分钟。
题解:贪心题么么哒,直接DFS一遍就好啦
1 /************************************************************** 2 Problem: 1907 3 User: HansBug 4 Language: Pascal 5 Result: Accepted 6 Time:392 ms 7 Memory:3480 kb 8 ****************************************************************/ 9 10 type11 point=^node;12 node=record13 g:longint;14 next:point;15 end;16 var17 i,j,k,l,m,n,tot,t:longint;18 a:array[0..100000] of point;19 b:array[0..100000] of longint;20 c:array[0..100000] of boolean;21 procedure add(x,y:longint);22 var p:point;23 begin24 new(p);p^.g:=y;p^.next:=a[x];a[x]:=p;25 end;26 procedure dfs(y,x:longint);27 var p:point;tot:longint;28 begin29 b[x]:=1;tot:=0;p:=a[x];30 while p<>nil do31 begin32 if p^.g<>y then33 begin34 dfs(x,p^.g);35 inc(b[x],b[p^.g]);36 if not(c[p^.g]) then inc(tot);37 end;38 p:=p^.next;39 end;40 if tot>=2 then41 begin42 dec(b[x],2);43 c[x]:=true;44 end45 else if tot=1 then dec(b[x]);46 end;47 begin48 readln(t);49 while t>0 do50 begin51 readln(n);52 fillchar(b,sizeof(b),0);53 fillchar(c,sizeof(c),false);54 for i:=1 to n do a[i]:=nil;55 for i:=1 to n-1 do56 begin57 readln(j,k);58 add(j,k);add(k,j);59 end;60 dfs(0,1);dec(t);61 writeln(b[1]);62 end;63 end.
转载地址:http://kpezz.baihongyu.com/