Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <cassert>
- #include <algorithm>
- #include <vector>
- #include <unordered_map>
- #include "optimization.h"
- #include <map>
- #include <unordered_set>
- #define all(a) a.begin, a.end()
- using namespace std;
- vector<pair<bool,int>> mark;
- vector<vector<int>> tree;
- bool flag = false;
- void dfs(int root, int counter) {
- mark[root] = {true, counter};
- for (int i = 0; i < size(tree[root]); i++) {
- if (!mark[tree[root][i]].first) {
- dfs(tree[root][i], counter);
- }
- }
- }
- int main() {
- int v;
- int e;
- cin >> v >> e;
- mark.resize(v + 1, {false, 0});
- tree.resize(v + 1);
- for (int i = 0; i < e; i++) {
- int a, b;
- cin >> a >> b;
- tree[a].push_back(b);
- tree[b].push_back(a);
- }
- int counter = 0;
- for (int i = 1; i <= v; i++){
- if (!mark[i].first){
- dfs(i, ++counter);
- }
- }
- for (int i = 1; i <= v; i++){
- std::cout << mark[i].second << " ";
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement