#include "mygraph.h"
#include <cstddef>
#include <iostream>
using namespace std;
node* build_graph(int n)
{
node* p;
p = new node[n];
for(int i=0;i<n;i++)
{
p[i].next = NULL;
p[i].index = i;
}
cout<<"make graph complete\n";
return p;
}
void graph_connect(node* graph,int a,int b)
{
//connect node a and node b (a,b are index)
node* p;
p = graph[a].next;
while(p!=NULL)
{
p = p->next;
if(p->index==b)
{
return; //already connected
cout<<"already connect\n";
}
}
p = new node;
p->index = b;
p->next = NULL;
cout<<"connect!\n";
}
void show_graph(node* graph,int n)
{
for(int i=0;i<n;i++)
{
cout<<graph[i].index;
node* p = graph[i].next;
while(p!=NULL)
{
cout<<" -> "<< p->index;
p = p->next;
}
cout<<endl;
}
}
bool query_connect(node* graph,int a, int b)
{
node* p = graph[a].next;
while(p!=NULL)
{
if(p->index == b)
return true;
else
p = p->next;
}
return false;
}
I2luY2x1ZGUgIm15Z3JhcGguaCIKI2luY2x1ZGUgPGNzdGRkZWY+CiNpbmNsdWRlIDxpb3N0cmVhbT4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCm5vZGUqIGJ1aWxkX2dyYXBoKGludCBuKQp7CiAgICBub2RlKiBwOwoJcCA9IG5ldyBub2RlW25dOwoJZm9yKGludCBpPTA7aTxuO2krKykKCXsKCQlwW2ldLm5leHQgPSBOVUxMOwoJCXBbaV0uaW5kZXggPSBpOwoJfQkKCWNvdXQ8PCJtYWtlIGdyYXBoIGNvbXBsZXRlXG4iOwoJcmV0dXJuIHA7Cn0Kdm9pZCBncmFwaF9jb25uZWN0KG5vZGUqIGdyYXBoLGludCBhLGludCBiKQp7CgkvL2Nvbm5lY3Qgbm9kZSBhIGFuZCBub2RlIGIgKGEsYiBhcmUgaW5kZXgpCglub2RlKiBwOwoJcCA9IGdyYXBoW2FdLm5leHQ7Cgl3aGlsZShwIT1OVUxMKQoJewoJCXAgPSBwLT5uZXh0OwoJCWlmKHAtPmluZGV4PT1iKQoJCXsKCQkJcmV0dXJuOwkJLy9hbHJlYWR5IGNvbm5lY3RlZAoJCQljb3V0PDwiYWxyZWFkeSBjb25uZWN0XG4iOwoJCX0KCX0KCXAgPSBuZXcgbm9kZTsKCXAtPmluZGV4ID0gYjsKCXAtPm5leHQgPSBOVUxMOwoJY291dDw8ImNvbm5lY3QhXG4iOwp9CgoKdm9pZCBzaG93X2dyYXBoKG5vZGUqIGdyYXBoLGludCBuKQp7Cglmb3IoaW50IGk9MDtpPG47aSsrKQoJewoJCWNvdXQ8PGdyYXBoW2ldLmluZGV4OwoJCW5vZGUqIHAgPSBncmFwaFtpXS5uZXh0OwoJCXdoaWxlKHAhPU5VTEwpCgkJewoJCQljb3V0PDwiIC0+ICI8PCBwLT5pbmRleDsKCQkJcCA9IHAtPm5leHQ7CgkJfQoJCWNvdXQ8PGVuZGw7Cgl9Cn0KCmJvb2wgcXVlcnlfY29ubmVjdChub2RlKiBncmFwaCxpbnQgYSwgaW50IGIpCnsKCW5vZGUqIHAgPSBncmFwaFthXS5uZXh0OwoJd2hpbGUocCE9TlVMTCkKCXsKCQlpZihwLT5pbmRleCA9PSBiKQoJCQlyZXR1cm4gdHJ1ZTsKCQllbHNlCgkJCXAgPSBwLT5uZXh0OwoJfQoJcmV0dXJuIGZhbHNlOwp9Cg==