#include #include #include #include using namespace std; typedef pair pt; vector< vector< int > > T; vector< pt > Vhod; map< pt, int > Color; int maxColor = 1; void solve(int root, int prevColor) { int color = 1; for(int i = 0; i < T[root].size(); i++) { pt u_v = make_pair(root, T[root][i]); if(color == prevColor) color++; if(color > maxColor) maxColor = color; Color[u_v] = color++; solve(u_v.second, Color[u_v]); } } int main() { freopen("tcoloring.in", "r", stdin); freopen("tcoloring.out", "w", stdout); int N, u, v; scanf("%d", &N); T.resize(N + 100); for(int i = 0; i < N - 1; i++) { scanf("%d%d", &u, &v); Vhod.push_back(make_pair(u, v)); T[u].push_back(v); } solve(1, 0); printf("%d\n", maxColor); for(int i = 0; i < Vhod.size(); i++) { printf("%d\n",Color[Vhod[i]]); } return 0; }