全T QAQ
蒟蒻疑问:这种做法是不是O(nm)的?
#include<bits/stdc++.h>
using namespace std;
const int N=1e6+5;
const int M=2e6+5;
int nex[M],to[M],p;
int head[N],vis[N];
void add(int a,int b){
nex[++p]=head[a];
head[a]=p;
to[p]=b;
}
int n;
int f[N];
void dfs(int u){
vis[u]=1;
for(int i=head[u];i;i=nex[i]){
int v=to[i];
if(!vis[v]){
f[u]++;
dfs(v);
}
}
}
int read(){
int x=0,w=1;
char ch=0;
while(ch<'0' || ch>'9'){
if(ch=='-') w=-1;
ch=getchar();
}
while(ch>='0' && ch<='9'){
x=(x<<3)+(x<<1)+(ch-'0');
ch=getchar();
}
return x*w;
}
void write(int x){
if(x<0){
x=-x;
putchar('-');
}
if(x>9) write(x/10);
putchar(x%10+'0');
}
int main(){
n=read();
for(int i=1;i<=n-1;i++){
int u,v;
u=read();
v=read();
add(u,v);
add(v,u);
}
dfs(1);
for(int i=1;i<=n;i++){
write(f[i]);
putchar(' ');
}
return 0;
}