#define _CRT_SECURE_NO_DEPRECATE #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #define mpair make_pair #define all(v) v.begin(),v.end() using namespace std; typedef long long ll; typedef long double ld; const ld epsylon = 1e-9; vector cols; char used[302][302]; vector vis; int n,m; vector > > ne; int ans; void dfs(int from) { vis[from] = 1; for (int i = 0; i < (int)ne[from].size();++i){ if (cols[ne[from][i].second] != -1) { continue; } int fc = 0; for (int j = 1; j <= ans; ++j) { if (!used[from][j] && !used[ne[from][i].first][j]) { fc = j; break; } } cols[ne[from][i].second] = fc; used[from][fc] = 1; used[ne[from][i].first][fc] = 1; if (!vis[ne[from][i].first]){ vis[ne[from][i].first] = 1; dfs(ne[from][i].first); } } } int main() { freopen("gcoloring.in","r",stdin); freopen("gcoloring.out","w",stdout); cin >> n >>m; ne.resize(n); for (int i = 0; i < m;++i){ int f,t; scanf("%d %d",&f, &t); f--; t--; ne[f].push_back(mpair(t, i)); ne[t].push_back(mpair(f, i)); } ans = 0; for (int i = 0; i < n ;++i){ ans = max(ans, (int)ne[i].size()); } cols.resize(m, -1); memset(used, 0, sizeof(used)); int beg; for (int i = 0; i < (int)ne.size();++i){ if (ne[i].size() == ans) { beg = i; break; } } queue tc; vis.resize(n, 0); //tc.push(beg); dfs(beg); //vis[beg] = 1; //for (int i = 0; i < (int)ne[beg].size(); ++i) { // cols[ne[beg][i].second] = i + 1; //} //while (!tc.empty()) { // int c = tc.front();tc.pop(); // int color = 1; // for (int i = 0; i < (int)ne[c].size();++i){ // if (cols[ne[c][i].second] != -1) { // continue; // } // int fc = 0; // for (int j = 1; j <= ans; ++j) { // if (!used[c][j] && !used[ne[c][i].first][j]) { // fc = j; // break; // } // } // cols[ne[c][i].second] = fc; // used[c][fc] = 1; // used[ne[c][i].first][fc] = 1; // if (!vis[ne[c][i].first]){ // tc.push(ne[c][i].first); // vis[ne[c][i].first] = 1; // } // } //} printf("%d\n", ans); for (int i =0 ; i < (int)cols.size();++i){ printf("%d\n", cols[i]); } return 0; }