#include<iostream>
#include<vector>
using namespace std;
struct node
{
node *left;
int data;
node *right;
node(int x) : left(NULL),data(x),right(NULL)
{};
};
void Create_Graph(int V,vector<node *>& v)
{
v.resize(5,nullptr);
v.reserve(5);
}
void Create_Edge(vector<node *>&v,int M,int N)
{
node *temp;
temp=new node(N);
temp->right=v.at(M);
if(v.at(M))
v.at(M)->left=temp;
v.at(M)=temp;
temp=new node(M);
temp->right=v.at(N);
if(v.at(N))
v.at(N)->left=temp;
v.at(N)=temp;
}
void Display_List(vector<node *>&v,int V)
{
node *temp;
for(unsigned i=0;i<V;i++)
{
temp=v.at(i);
cout<<i<<":";
while(temp!=NULL)
{
cout<<' '<<temp->data;
temp=temp->right;
}
cout<<endl;
}
}
int main(void)
{
vector<node *>myvector;
int V=5;
Create_Graph(V,myvector);
Create_Edge(myvector,0,1);
Create_Edge(myvector,0,4);
Create_Edge(myvector,1,2);
Create_Edge(myvector,1,3);
Create_Edge(myvector,1,4);
Create_Edge(myvector,2,3);
Create_Edge(myvector,3,4);
Display_List(myvector,V);
return(0);
}
ICAgICNpbmNsdWRlPGlvc3RyZWFtPgogICAgI2luY2x1ZGU8dmVjdG9yPgoKICAgIHVzaW5nIG5hbWVzcGFjZSBzdGQ7CgoKICAgIHN0cnVjdCBub2RlCiAgICB7CiAgICAgICBub2RlICpsZWZ0OwogICAgICAgaW50IGRhdGE7CiAgICAgICBub2RlICpyaWdodDsKICAgICAgIG5vZGUoaW50IHgpIDogbGVmdChOVUxMKSxkYXRhKHgpLHJpZ2h0KE5VTEwpCiAgICAgICB7fTsKICAgIH07CgoKICAgIHZvaWQgQ3JlYXRlX0dyYXBoKGludCBWLHZlY3Rvcjxub2RlICo+JiB2KQogICAgewogICAgICAgdi5yZXNpemUoNSxudWxscHRyKTsKICAgICAgIHYucmVzZXJ2ZSg1KTsKICAgIH0KCiAgICB2b2lkIENyZWF0ZV9FZGdlKHZlY3Rvcjxub2RlICo+JnYsaW50IE0saW50IE4pCiAgICB7CiAgICAgICBub2RlICp0ZW1wOwogICAgICAgdGVtcD1uZXcgbm9kZShOKTsKICAgICAgIHRlbXAtPnJpZ2h0PXYuYXQoTSk7CiAgICAgICBpZih2LmF0KE0pKQogICAgICAgICAgdi5hdChNKS0+bGVmdD10ZW1wOwogICAgICAgdi5hdChNKT10ZW1wOwogICAgICAgdGVtcD1uZXcgbm9kZShNKTsKICAgICAgIHRlbXAtPnJpZ2h0PXYuYXQoTik7CiAgICAgICBpZih2LmF0KE4pKQogICAgICAgICAgdi5hdChOKS0+bGVmdD10ZW1wOwogICAgICAgdi5hdChOKT10ZW1wOwogICAgfQoKICAgIHZvaWQgRGlzcGxheV9MaXN0KHZlY3Rvcjxub2RlICo+JnYsaW50IFYpCiAgICB7CiAgICAgICBub2RlICp0ZW1wOwogICAgICAgZm9yKHVuc2lnbmVkIGk9MDtpPFY7aSsrKQogICAgICAgewogICAgICAgICAgIHRlbXA9di5hdChpKTsKICAgICAgICAgICBjb3V0PDxpPDwiOiI7CiAgICAgICAgICAgd2hpbGUodGVtcCE9TlVMTCkKICAgICAgICAgICB7CiAgICAgICAgICAgICAgY291dDw8JyAnPDx0ZW1wLT5kYXRhOwogICAgICAgICAgICAgIHRlbXA9dGVtcC0+cmlnaHQ7CiAgICAgICAgICAgfQogICAgICAgICAgY291dDw8ZW5kbDsKICAgICAgIH0KICAgIH0KCiAgICBpbnQgbWFpbih2b2lkKQogICAgewogICAgICAgdmVjdG9yPG5vZGUgKj5teXZlY3RvcjsKICAgICAgIGludCBWPTU7CiAgICAgICBDcmVhdGVfR3JhcGgoVixteXZlY3Rvcik7CiAgICAgICBDcmVhdGVfRWRnZShteXZlY3RvciwwLDEpOwogICAgICAgQ3JlYXRlX0VkZ2UobXl2ZWN0b3IsMCw0KTsKICAgICAgIENyZWF0ZV9FZGdlKG15dmVjdG9yLDEsMik7CiAgICAgICBDcmVhdGVfRWRnZShteXZlY3RvciwxLDMpOwogICAgICAgQ3JlYXRlX0VkZ2UobXl2ZWN0b3IsMSw0KTsKICAgICAgIENyZWF0ZV9FZGdlKG15dmVjdG9yLDIsMyk7CiAgICAgICBDcmVhdGVfRWRnZShteXZlY3RvciwzLDQpOwogICAgICAgRGlzcGxheV9MaXN0KG15dmVjdG9yLFYpOwogICAgICAgcmV0dXJuKDApOwogICAgfQo=