一种图的邻接表写法:
#include<stdio.h>
#include<string.h>
const int Max_n=1000;
const int Max_e=10000;
int top;
struct Tnode
{
int head;
}H[Max_n];
struct Eadge
{
int v; // 点
int s; // 权值
int next;
}E[Max_e];
void init()
{
top=1;
memset(H,0,sizeof(H));
}
void add_eadge(int u,int v,int s)
{
E[top].v=v;
E[top].s=s;
E[top].next= H[u].head;
H[u].head=top++;
}
void dfs(int u)
{
for(int i=H[u].head;i!=0;i=E[i].next)
{
printf("%d %d %d\n",u,E[i].v,E[i].s);
}
}
int main()
{
int i,j,n,m;
init();
scanf("%d%d",&n,&m); //m条边,n次查询
for(i=1;i<=m;i++)
{
int x,y,z;
scanf("%d%d%d",&x,&y,&z);
add_eadge(x,y,z);
}
while(n--)
{
scanf("%d",&i);
dfs(i);
}
}