GT isomorphic

 //Write a program to check whether two graphs are

//isomorphic to each other or not.

#include<bits/stdc++.h>

using namespace std;

int v1,v2,e1,e2;

bool deg(vector< vector<int> >gph1,vector< 

vector<int> > gph2)

{

 vector<int> 

degree1(gph1.size()),degree2(gph2.size());

 for(int i=0;i<gph1.size();i++)

 {

 degree1[gph1[i].size()]++;

 degree2[gph2[i].size()]++;

 }

 for(int i=0;i<gph1.size();i++)

 if(degree1[i]!=degree2[i]) return false;

 return true;

}

bool Is_isomorphic(vector< vector<int> > gph1,vector< 

vector<int> > gph2)

{

 if(v1==v2 && e1==e2 && deg(gph1,gph2))

 return true;

 return false;

}

int main()

{

 cout<<"Enter The No. of Vertices and Edges for First 

graph\n";

 cin>>v1>>e1;

 cout<<"Enter Adjacency List for First Graph: \n";

 //cout<<"Enter The Adjacency List for First Graph: ";

 vector <vector<int> > gph1(v1);

 int vert1,vert2;

 for(int i=0;i<e1;i++)

 {

 cin>>vert1>>vert2;

 gph1[vert1].push_back(vert2);

 gph1[vert2].push_back(vert1);

 }

 cout<<"\nEnter The No. of Vertices, Edges for second 

graph \n";

 cin>>v2>>e2;

 cout<<"Enter Adjacency List for Second Graph: \n";

 //cout<<"Enter The Adjacency List for Second Graph: 

";

 vector <vector<int> > gph2(v2);

 for(int i=0;i<e2;i++)

 {

 cin>>vert1>>vert2;

 gph2[vert1].push_back(vert2);

 gph2[vert2].push_back(vert1);

 }

 if(Is_isomorphic(gph1,gph2))

 cout<<"\nBoth the graphs are Isomorphic\n";

 else

 cout<<"\nBoth graphs are not Isomorphic\n";

}


Comments