讲解:https://www.cnblogs.com/Sxy_Limit/p/12495969.html
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std;
const int N=1e5+10;
int h[N],e[N*2],ne[N*2],idx,depth[N];
int st[N];
int deg[N];
void add(int a,int b)
{
e[idx]=b;
ne[idx]=h[a];
h[a]=idx++;
}
struct Node{
int x,y;
}node[N];
int main()
{
int n;
cin>>n;
memset(h,-1,sizeof h );
for(int i=1;i<n;i++)
{
int a,b;
scanf("%d%d",&a,&b);
node[i].x=a;
node[i].y=b;
deg[a]++;
deg[b]++;
add(a,b);add(b,a);
}
int num=n-1;
int flag=0;
for(int i=1;i<n;i++)
{
int x=node[i].x;
int y=node[i].y;
if((deg[x]==1||deg[y]==1)&&flag<=2)
{
printf("%d\n",flag);
flag++;
}
else
{
printf("%d\n",--num);
}
}
}