Union-Find Algorithm | Set 1 (Detect Cycle in a an Undirected Graph) | GeeksforGeeks int find(int parent...

Please Visit: http://ift.tt/1ajReyV



Union-Find Algorithm | Set 1 (Detect Cycle in a an Undirected Graph) | GeeksforGeeks

int find(int parent[], int i){ if (parent[i] == 1) return i; return find(parent, parent[i]);} // A utility function to do union of two subsets void Union(int parent[], int x, int y){ int xset = find(parent, x); int yset = find(parent, y); parent[xset] = yset;} // The main function to check whether a given graph contains cycle or notint isCycle( struct Graph* graph ){ // Allocate memory for creating V subsets int parent = (int ) malloc( graph>V * sizeof(int) ); // Initialize all subsets as single element sets memset(parent, 1, sizeof(int) * graph>V); // Iterate through all edges of graph, find subset of both // vertices of every edge, if both subsets are same, then there is // cycle in graph. for(int i = 0; i < graph->E; ++i) { int x = find(parent, graph->edge[i].src); int y = find(parent, graph->edge[i].dest); if (x == y) return 1; Union(parent, x, y); } return 0;}

http://ift.tt/1lOrEHl

http://ift.tt/UkFhIR



Union-Find Algorithm | Set 1 (Detect Cycle in a an Undirected Graph) | GeeksforGeeks







from Public RSS-Feed of Jeffery yuan. Created with the PIXELMECHANICS 'GPlusRSS-Webtool' at http://gplusrss.com http://ift.tt/1lOrEHo

via LifeLong Community

No comments:

Post a Comment