Program:
/*
Q2-Scan edges from user.Create adj list.Check if given graph is connected or not.
*/
#include<iostream>
using namespace std;
class Node
{
public:
int vertex;
int weight;
Node *next;
Node()
{
vertex = -1;
weight = 0;
next = NULL;
}
Node(int v,int w=1)
{
vertex = v;
weight = w;
next = NULL;
}
};
class Graph
{
Node *head[15];
int start,dir;
int n,weighted;
public:
Graph()
{
cout<<"\n\n Enter Number of Vertices:";
cin>>n;
cout<<"\n Enter 0-Directed 1-Directed:";
cin>>dir;
cout<<"\n Enter 0-Weighted 1-Weighted:";
cin>>weighted;
cout<<"\n Enter Starting Vertices:";
cin>>start;
for(int i=0;i<n;i++)
{
head[i] = NULL;
}
}
void readGraphByEdges();
void showGraphByEdges();
void insert(int u,int v,int w);
void dfs(int *visited,int ver);
void connected();
};
void Graph::dfs(int *visited,int ver)
{
visited[ver] = 1;
Node *t;
t = head[ver];
while(t != NULL)
{
if( visited[t->vertex] == 0)
{
dfs(visited , t->vertex);
}
t = t->next;
}
}
void Graph::connected()
{
int visited[n];
int i;
for(i=0;i<n;i++)
{
visited[i] = 0;
}
dfs(visited,start);
for(i=0;i<n;i++)
{
if(visited[i] == 0)
{
break;
}
}
if(i == n)
{
cout<<"\n\n Graph is Connected!";
}
else
{
cout<<"\n\n Graph is not Connected!";
}
}
void Graph::readGraphByEdges()
{
cout<<"\n\n Enter "<<n<<" Edges:";
int u,v,w;
while(1)
{
if(weighted == 0)
{
cout<<"\n Enter u,v edges:";
cin>>u>>v;
if(u == -1)
{
break;
}
insert(u,v,1);
if(dir == 0)
{
insert(v,u,1);
}
}
else
{
cout<<"\n Enter u,v,w edges:";
cin>>u>>v>>w;
if(u == -1)
{
break;
}
insert(u,v,w);
if(dir == 0)
{
insert(v,u,w);
}
}
}
}
void Graph::insert(int u,int v,int w=1)
{
Node *t;
t = head[u];
if(t == NULL)
{
head[u] = new Node(v,w);
return;
}
while(t->next != NULL)
{
if(t->vertex == v)
{
return;
}
t = t->next;
}
t->next = new Node(v,w);
}
void Graph::showGraphByEdges()
{
Node *t;
for(int i=0;i<n;i++)
{
t = head[i];
cout<<"\n\n Vertex "<<i+start<<" Edges:"<<endl;
while(t!=NULL)
{
cout<<t->vertex<<"="<<t->weight<<endl;
t = t->next;
}
}
}
int main()
{
freopen("inputGraph.txt","r",stdin);
Graph g;
g.readGraphByEdges();
cout<<"\n\n Displaying Graph:";
g.showGraphByEdges();
g.connected();
return 0;
}
Input File:
Connected:
6 0 0 0 0 1 0 3 1 4 2 5 3 4 3 5 4 3 4 5 -1 -1
Not-Connected:
6 0 0 0 0 1 0 3 1 4 2 5 3 4 4 3 -1 -1
Output Connected:


