Lang:G++
Edit12345678910111213141516171819202122232425262728293031#include <stdio.h>#include <string.h>#include <iostream>#include <algorithm>using namespace std;int head[100006],ip;int n,m,a[100006];void init(){memset(head,-1,sizeof(head));ip=0;}struct note{int v,next;}edge[100006*2];void addedge(int u,int v){edge[ip].v=v,edge[ip].next=head[u],head[u]=ip++;}int dfs(int u,int pre){int sum=0;for(int i=head[u];i!=-1;i=edge[i].next){int v=edge[i].v;if(v==pre)continue;sum+=dfs(v,u);}