diff --git a/C++/kosarajus_algorithm.cpp b/C++/kosarajus_algorithm.cpp new file mode 100644 index 0000000..889c1d1 --- /dev/null +++ b/C++/kosarajus_algorithm.cpp @@ -0,0 +1,71 @@ +#include +using namespace std; +void DFS(vector> grid,stack &temp,int start,vector &visited) +{ + visited[start]=true; + for(int i=0;i> grid,int start,vector &visited) +{ + visited[start]=true; + for(int i=0;i> grid,int n) +{ + stack temp; + vector visited={false,false,false,false,false,false,false,false}; + // visited[0]=true; + DFS(grid,temp,0,visited); + for(int i=0;i0) + { + start=temp.top(); + temp.pop(); + if(visited[start]==false) + { + cout<<"("; + DFS(grid,start,visited); + cout<<")"; + } + } +} +int main() +{ + vector> grid={{0,1,0,0,0,0,0,0}, + {0,0,1,0,0,0,0,0}, + {1,0,0,1,0,0,0,0}, + {0,0,0,0,1,0,0,0}, + {0,0,0,0,0,1,0,1}, + {0,0,0,0,0,0,1,0}, + {0,0,0,0,1,0,0,1}, + {0,0,0,0,0,0,0,0} + }; + cout<<"Strongly connected components are: "; + kosaraju(grid,8); + return 0; +} \ No newline at end of file diff --git a/MCM.cpp b/MCM.cpp new file mode 100644 index 0000000..9413c0b --- /dev/null +++ b/MCM.cpp @@ -0,0 +1,79 @@ +#include +using namespace std; +void paranthesis(int **para,int i,int j) +{ + if(i==j) + cout<<"A"<>n; + int dim[n+1]; + cout<<"Enter the dimensions: "; + for(int i=0;i<=n;i++) + { + cin>>dim[i]; + } + int cost[n+1][n+1]={0}; + int** para= new int*[n]; + for(int i=0;i<=n;i++){ + para[i] = new int[n+1]; + for(int j=0;j<=n;j++) + para[i][j]=0;} + for(int g=1;g<=n;g++) + for(int i=1,j=g;j<=n;j++,i++) + { + if(i==j) + { + cost[i][j]=0; + para[i][j]=0; + } + else + { + int m=INT_MAX; + int p; + for(int k=i;ktemp) + { + m=temp; + p=k; + } + } + cost[i][j]=m; + para[i][j]=p; + } + } + cout<