// C++ program to demonstrate Adjacency Matrix
// representation of undirected and unweighted graph
#include <bits/stdc++.h>
using namespace std;
void addEdge(vector<vector<int>> &mat, int i, int j)
{
mat[i][j] = 1;
mat[j][i] = 1; // Since the graph is undirected
}
void displayMatrix(vector<vector<int>> &mat)
{
int V = mat.size();
for (int i = 0; i < V; i++)
{
for (int j = 0; j < V; j++)
cout << mat[i][j] << " ";
cout << endl;
}
}
int main()
{
// Create a graph with 4 vertices and no edges
// Note that all values are initialized as 0
int V = 4;
vector<vector<int>> mat(V, vector<int>(V, 0));
// Now add edges one by one
addEdge(mat, 0, 1);
addEdge(mat, 0, 2);
addEdge(mat, 1, 2);
addEdge(mat, 2, 3);
/* Alternatively we can also create using below
code if we know all edges in advacem
vector<vector<int>> mat = {{ 0, 1, 0, 0 },
{ 1, 0, 1, 0 },
{ 0, 1, 0, 1 },
{ 0, 0, 1, 0 } }; */
cout << "Adjacency Matrix Representation" << endl;
displayMatrix(mat);
return 0;
}
Ly8gQysrIHByb2dyYW0gdG8gZGVtb25zdHJhdGUgQWRqYWNlbmN5IE1hdHJpeAovLyByZXByZXNlbnRhdGlvbiBvZiB1bmRpcmVjdGVkIGFuZCB1bndlaWdodGVkIGdyYXBoCiNpbmNsdWRlIDxiaXRzL3N0ZGMrKy5oPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKdm9pZCBhZGRFZGdlKHZlY3Rvcjx2ZWN0b3I8aW50Pj4gJm1hdCwgaW50IGksIGludCBqKQp7CiAgICBtYXRbaV1bal0gPSAxOwogICAgbWF0W2pdW2ldID0gMTsgLy8gU2luY2UgdGhlIGdyYXBoIGlzIHVuZGlyZWN0ZWQKfQoKdm9pZCBkaXNwbGF5TWF0cml4KHZlY3Rvcjx2ZWN0b3I8aW50Pj4gJm1hdCkKewogICAgaW50IFYgPSBtYXQuc2l6ZSgpOwogICAgZm9yIChpbnQgaSA9IDA7IGkgPCBWOyBpKyspCiAgICB7CiAgICAgICAgZm9yIChpbnQgaiA9IDA7IGogPCBWOyBqKyspCiAgICAgICAgICAgIGNvdXQgPDwgbWF0W2ldW2pdIDw8ICIgIjsKICAgICAgICBjb3V0IDw8IGVuZGw7CiAgICB9Cn0KCmludCBtYWluKCkKewoKICAgIC8vIENyZWF0ZSBhIGdyYXBoIHdpdGggNCB2ZXJ0aWNlcyBhbmQgbm8gZWRnZXMKICAgIC8vIE5vdGUgdGhhdCBhbGwgdmFsdWVzIGFyZSBpbml0aWFsaXplZCBhcyAwCiAgICBpbnQgViA9IDQ7CiAgICB2ZWN0b3I8dmVjdG9yPGludD4+IG1hdChWLCB2ZWN0b3I8aW50PihWLCAwKSk7CgogICAgLy8gTm93IGFkZCBlZGdlcyBvbmUgYnkgb25lCiAgICBhZGRFZGdlKG1hdCwgMCwgMSk7CiAgICBhZGRFZGdlKG1hdCwgMCwgMik7CiAgICBhZGRFZGdlKG1hdCwgMSwgMik7CiAgICBhZGRFZGdlKG1hdCwgMiwgMyk7CgogICAgLyogQWx0ZXJuYXRpdmVseSB3ZSBjYW4gYWxzbyBjcmVhdGUgdXNpbmcgYmVsb3cKICAgICAgIGNvZGUgaWYgd2Uga25vdyBhbGwgZWRnZXMgaW4gYWR2YWNlbQoKICAgICB2ZWN0b3I8dmVjdG9yPGludD4+IG1hdCA9IHt7IDAsIDEsIDAsIDAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgMSwgMCwgMSwgMCB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyAwLCAxLCAwLCAxIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IDAsIDAsIDEsIDAgfSB9OyAqLwoKICAgIGNvdXQgPDwgIkFkamFjZW5jeSBNYXRyaXggUmVwcmVzZW50YXRpb24iIDw8IGVuZGw7CiAgICBkaXNwbGF5TWF0cml4KG1hdCk7CgogICAgcmV0dXJuIDA7Cn0=