Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- void bfs(int v) {
- queue<int> q;
- q.push(v);
- while (!q.empty()) {
- v = q.front();
- q.pop();
- for (auto u: ng[v]) {
- if (d[u] > d[v] + 1) {
- d[u] = d[v] + 1;
- q.push(u);
- }
- }
- }
- }
- d.assign(comp, INF);
- for (int i = 0; i < comp; i++) {
- if (d[i] == INF) {
- d[i] = 0;
- bfs(i);
- }
- }
- int start = 0;
- vector<int> check = {start};
- for (int i = 1; i < comp; i++) {
- if (d[i] > d[start]) {
- check.clear();
- check.pb(i);
- start = i;
- } else if (d[i] == d[start]) {
- check.pb(i);
- }
- }
- d.assign(comp, INF);
- for (auto k: check) {
- if (d[k] == INF) {
- d[k] = 0;
- bfs(k);
- }
- }
- int dd = 0;
- for (int i = 0; i < comp; i++) {
- if (d[i] != INF && d[i] > dd) dd = d[i];
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement