Advertisement
Singasking

Untitled

Jun 23rd, 2023
1,046
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.61 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<vector<int>> cycle(N,vector<int>(N,0));
  12.         vector<int> vis(N,0);
  13.         for(auto edge:edges) {
  14.             grid[edge[0]][edge[1]]=1;
  15.             grid[edge[1]][edge[0]]=1;
  16.         }
  17.    
  18.  
  19.         queue<pair<int,int>> q;
  20.         for(int i=1;i<N;i++) {
  21.             if(vis[i]==0) {
  22.                 q.push({i,-1});
  23.               vis[i]=1;
  24.                 while(!q.empty()) {
  25.  
  26.                     pair<int,int> current = q.front();
  27.                    
  28.                     int c = current.first;
  29.                     int p = current.second;
  30.                     q.pop();
  31.                     for(int x=1;x<N;x++) {
  32.                         if(grid[c][x]==1 ) {
  33.                             if(vis[x]==0) {
  34.                                 q.push({x,c});
  35.                                 vis[x]=1;
  36.                                
  37.                             } else if(vis[x]==1 && p!=x ) {
  38.                                 //cyclic edge. add it
  39.                                 cycle[x][c]=1;
  40.                                 cycle[c][x]=1;
  41.  
  42.                             }
  43.  
  44.                         }
  45.                     }
  46.  
  47.  
  48.                 }
  49.             }          
  50.         }
  51.        
  52.     for(int i=edges.size()-1;i>=0;i--) {
  53.         auto edge = edges[i];
  54.         if(cycle[edge[0]][edge[1]]) {
  55.             return edge;
  56.         }
  57.     }
  58.     return edges[edges.size()-1]; //will never occur
  59.     }
  60.    
  61. };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement