int Head[MAXN] = {0};
int count = 0;
struct _Edge
{
int u;
int v;
int next;
};
_Edge Edge[MAXN*2];
//存边(无向图存两次):
void Addedge(int u,int v)
{
Edge[++count].u = u;
Edge[count].v = v;
Edge[count].next = Head[u];
Head[u] = count;
}
//遍历:
for(int i = Head[u];i;i=Edge[u].next)
{
//Do something
}