Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- using namespace std;
- vector <vector <int>> g;
- vector <int> an;
- map <pair <int, int >, int> mp;
- vector <bool> used;
- map <int, int > h;
- void dfs(int j, int x)
- {
- used[j] = 1;
- int cnt = 1;
- for (int i = 0; i < g[j].size(); ++i)
- {
- if (cnt == x)
- cnt++;
- if (!used[g[j][i]])
- {
- int r1 = mp[{j, g[j][i]}];
- int r2 = mp[{g[j][i],j}];
- int a = max(r1, r2);
- an[a] = cnt;
- dfs(g[])
- cnt++;
- }
- }
- }
- int main()
- {
- int n, m, a, b;
- cin >> n >> m;
- g.resize(n + 1);
- an.resize(m + 1);
- used.resize(n + 1);
- for (int i = 0; i < m; ++i)
- {
- cin >> a >> b;
- g[a].push_back(b);
- g[b].push_back(a);
- mp[{a,b}] = i;
- }
- int ans = 0;
- for (int i = 1; i <= n; ++i)
- ans = max(ans, (int)g[i].size());
- cout << ans << endl;
- dfs(1, 0);
- for (int i = 0; i < an.size(); ++i)
- cout << an[i] << " ";
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement