Advertisement
utkarshkalra

Untitled

Apr 16th, 2022
1,037
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.29 KB | None | 0 0
  1. class Solution {
  2. public:
  3.     pair <int,int> bfs(vector<vector<int>> &g,int src,string s){
  4.         queue<int> q;
  5.         vector <int> dis(s.length(),-1);
  6.        
  7.         q.push(src);
  8.         dis[src] = 1;
  9.         while(!q.empty()){
  10.             int cur = q.front();
  11.             q.pop();
  12.             for(int i:g[cur]){
  13.                 if(s[i]!=s[cur] && dis[i]==-1){
  14.                     q.push(i);
  15.                     dis[i] = dis[cur]+1;
  16.                 }
  17.             }
  18.         }
  19.        
  20.         int maxNode,maxDis=INT_MIN;
  21.        
  22.         for(int i=0;i<dis.size();i++){
  23.             if(dis[i]>maxDis)
  24.             {
  25.                 maxDis = dis[i];
  26.                 maxNode = i;
  27.             }
  28.         }
  29.        
  30.         return {maxNode,maxDis};
  31.     }
  32.     int longestPath(vector<int>& parent, string s) {
  33.        
  34.         vector<vector<int>> g(parent.size());
  35.         for(int i=1;i<parent.size();i++)
  36.         {
  37.             g[parent[i]].push_back(i);
  38.             g[i].push_back(parent[i]);
  39.         }
  40.        
  41.         int ans = -1;
  42.        
  43.         for(int i=0;i<parent.size();i++){
  44.             auto m = bfs(g,i,s);
  45.             auto n = bfs(g,m.first,s);
  46.            
  47.             ans = max(ans,n.second);
  48.         }
  49.        
  50.        
  51.         return ans;
  52.        
  53.     }
  54. };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement