Advertisement
Singasking

Untitled

Jun 23rd, 2023
882
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.34 KB | None | 0 0
  1.  
  2.  
  3.  
  4.  
  5.  
  6. class Solution {
  7. public:
  8.     vector<int> findRedundantConnection(vector<vector<int>>& edges) {
  9.         int N = edges.size()+1;
  10.         vector<vector<int>> grid(N,vector<int>(N,0));
  11.         vector<int> vis(N,0);
  12.         for(auto edge:edges) {
  13.             grid[edge[0]][edge[1]]=1;
  14.             grid[edge[1]][edge[0]]=1;
  15.         }
  16.         vector<vector<int>> cyclic;
  17.  
  18.         queue<pair<int,int>> q;
  19.         for(int i=1;i<N;i++) {
  20.             if(vis[i]==0) {
  21.                 q.push({i,-1});
  22.                 vis[i]=1;
  23.                 while(!q.empty()) {
  24.  
  25.                     pair<int,int> current = q.front();
  26.                     vis[i]=1;
  27.                     int c = current.first;
  28.                     int p = current.second;
  29.                     q.pop();
  30.                     for(int i=1;i<N;i++) {
  31.                         if(grid[c][i]==1 ) {
  32.                             if(vis[i]==0) {
  33.                                 q.push({i,c});
  34.                                
  35.                             } else if(vis[i]==1 && p!=i ) {
  36.                                 //cyclic edge. add it
  37.                                 cyclic.push_back({c,i});
  38.  
  39.                             }
  40.  
  41.                         }
  42.                     }
  43.  
  44.  
  45.                 }
  46.             }          
  47.         }
  48.         return cyclic[cyclic.size()-1];
  49.  
  50.     }
  51. };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement