Language: C++

#include<bits/stdc++.h>
using namespace std;
const int N=2e5+100;
int head[N],next[N],to[N],fa[N];
int sum[N],all;bool is[N];
int ans;
int one[N],two[N];
inline void dfs1(int k) {
	sum[k]=is[k];
	for (int i=head[k];i;i=next[i])
		if (to[i]!=fa[k]) {
			fa[to[i]]=k;
			dfs1(to[i]);
			if (one[to[i]]+1>one[k])
				two[k]=one[k],one[k]=one[to[i]]+1;
			else two[k]=max(two[k],one[to[i]]+1);
			sum[k]+=sum[to[i]];
		}
}
inline void dfs2(int k,int mx) {
	int l=all-sum[k]?mx:1<<30,r,i,One=mx,Two=0;
	for (i=head[k];i;i=next[i])
		if (to[i]!=fa[k]) {
			if (one[to[i]]+1>One)
				Two=One,One=one[to[i]]+1;
			else Two=max(Two,one[to[i]]+1);
			if (sum[to[i]]) l=min(l,one[to[i]]+1);
		}
	r=One==Two?One-1:(One==Two+1?Two:Two+1);
	if (is[k]) ans+=r+1;
	else if (l<=r) ans+=r-l+1;
	for (i=head[k];i;i=next[i])
		if (to[i]!=fa[k])
			dfs2(to[i],(one[to[i]]+1==One?Two:One)+1);
}
int main()
{
	int n,i,a,b,tot=0;char c;
	for (i=1,cin>>n;i<n;i++) {
		cin>>a>>b;
		to[++tot]=b,next[tot]=head[a],head[a]=tot;
		to[++tot]=a,next[tot]=head[b],head[b]=tot;
	}
	for (i=1;i<=n;all+=is[i++]=c-'0') while ((c=getchar())<'0'||'9'<c);
	dfs1(1);
	dfs2(1,0);
	cout<<ans+1<<endl;
	return 0;
}


Compiler output:
a.cc: In function 'void dfs1(int)':
a.cc:10:32: error: reference to 'next' is ambiguous
   10 |         for (int i=head[k];i;i=next[i])
      |                                ^~~~
In file included from /usr/include/c++/14/bits/stl_algobase.h:66,
                 from /usr/include/c++/14/algorithm:60,
                 from /usr/include/x86_64-linux-gnu/c++/14/bits/stdc++.h:51,
                 from a.cc:1:
/usr/include/c++/14/bits/stl_iterator_base_funcs.h:232:5: note: candidates are: 'template<class _InputIterator> constexpr _InputIterator std::next(_InputIterator, typename iterator_traits<_Iter>::difference_type)'
  232 |     next(_InputIterator __x, typename
      |     ^~~~
a.cc:4:13: note:                 'int next [200100]'
    4 | int head[N],next[N],to[N],fa[N];
      |             ^~~~
a.cc: In function 'void dfs2(int, int)':
a.cc:22:28: error: reference to 'next' is ambiguous
   22 |         for (i=head[k];i;i=next[i])
      |                            ^~~~
/usr/include/c++/14/bits/stl_iterator_base_funcs.h:232:5: note: candidates are: 'template<class _InputIterator> constexpr _InputIterator std::next(_InputIterator, typename iterator_traits<_Iter>::difference_type)'
  232 |     next(_InputIterator __x, typename
      |     ^~~~
a.cc:4:13: note:                 'int next [200100]'
    4 | int head[N],next[N],to[N],fa[N];
      |             ^~~~
a.cc:32:28: error: reference to 'next' is ambiguous
   32 |         for (i=head[k];i;i=next[i])
      |                            ^~~~
/usr/include/c++/14/bits/stl_iterator_base_funcs.h:232:5: note: candidates are: 'template<class _InputIterator> constexpr _InputIterator std::next(_InputIterator, typename iterator_traits<_Iter>::difference_type)'
  232 |     next(_InputIterator __x, typename
      |     ^~~~
a.cc:4:13: note:                 'int next [200100]'
    4 | int head[N],next[N],to[N],fa[N];
      |             ^~~~
a.cc: In function 'int main()':
a.cc:41:29: error: reference to 'next' is ambiguous
   41 |                 to[++tot]=b,next[tot]=head[a],head[a]=tot;
      |                             ^~~~
/usr/include/c++/14/bits/stl_iterator_base_funcs.h:232:5: note: candidates are: 'template<class _InputIterator> constexpr _InputIterator std::next(_InputIterator, typename iterator_traits<_Iter>::difference_type)'
  232 |     next(_InputIterator __x, typename
      |     ^~~~
a.cc:4:13: note:                 'int next [200100]'
    4 | int head[N],next[N],to[N],fa[N];
      |             ^~~~
a.cc:42:29: error: reference to 'next' is ambiguous
   42 |                 to[++tot]=a,next[tot]=head[b],head[b]=tot;
      |                             ^~~~
/usr/include/c++/14/bits/stl_iterator_base_funcs.h:232:5: note: candidates are: 'template<class _InputIterator> constexpr _InputIterator std::next(_InputIterator, typename iterator_traits<_Iter>::difference_type)'
  232 |     next(_InputIterator __x, typename
      |     ^~~~
a.cc:4:13: note:                 'int next [200100]'
    4 | int head[N],next[N],to[N],fa[N];
      |             ^~~~