For each case, output the width.
3
AC代码:
#include<iostream>
#include<string.h>
#include<string>
#include<algorithm>
#include<cstdio>
#define N 20
using namespace std;
typedef struct
{
int to;
int next;
}Node;
Node s[3*N];
int lev[N];
int head[N];
int res;
void init()
{
res=0;
memset(lev,0,sizeof(lev));
memset(head,-1,sizeof(head));
}
void add(int a,int b)
{
s[res].to=b;
s[res].next=head[a];
head[a]=res++;
}
void dfs(int cur,int now)
{
lev[cur]++;
if(head[now]==-1) return;
for(int i=head[now];i!=-1;i=s[i].next) dfs(cur+1,s[i].to);
}
int main()
{
int T;
scanf("%d",&T);
while(T--)
{
int n;
init();
scanf("%d",&n);
for(int i=0;i!=n;++i)
{
int a,b,c;
scanf("%d%d%d",&a,&b,&c);
if(b!=-1) add(a,b);
if(c!=-1) add(a,c);
}
dfs(0,1);
printf("%d\n",*max_element(lev,lev+n));
}return 0;
}