//圖
//定義
const int vnum=20;
typedef struct gp
{
VertexType vexs[vnum];
int arcs[vnum][vnum];
int vexnum,arcnum;//頂點/邊數
}Graph;
//帶權
const int vnum=20;
const int MAX_INT=32768;
typedef struct gp
{
VertexType vexs[vnum];
WeightType arcs[vnum][vnum];
int vexnum,arcnum;//頂點/邊數
}WGraph;
//建立無向帶權圖
void CreatGraph (Graph *g)
{
int i,j,n,e,w;
char ch;
scanf("%d",&n);
scnnf("%d",&e);
for (i=0;i<g->vexnum;i++)
{
scanf("%c",&ch);
g->vexs[i]=ch;//輸入頂點信息
}
for (i=0;i<g->vexnum;i++)//初始化
for (j=0;j<g->vexnum;j++)
g->arcs[i][j]=MAX_INT;
for (k=0;k<g->arcnum;k++)
{
scanf("%d %d %d",&i,&j,&w);
g->arcs[i][j]=w;
g->arcs[j][i]=w;//有向圖無此行
}
}
//鄰接表
//表節點
#define vnum 20
typedef struct arcnode
{
int adjvex;
WeightType weight;
struct arcnode *nextarc;
}ArcNode;
//表頭節點
typedef struct vexnode
{
int vertex;
ArcNode *firstarc;
}AdjList[vnum];
//圖
typedef struct gp
{
AdjList adjlist;
int vexnum,arcnum;
}Graph;
//建立無向帶權圖
CreateAdjlist (Graph *g)
{
int n,e,i,j,k;
ArcNode *p;
scanf ("%d %d",&n,&e);
g->vexnum=n;
g->arcnum=e;
for (i=0;i<n;i++)
{
g->adjlist[i].vertex=i;
g->adjlist[i].firstarc=NULL;
}
for (k=0;k<e;k++)
{
scanf ("%d %d",&i,&j);
p=(ArcNode*)malloc(sizeof(ArcNode));
p->adjvex=j;
p->nextarc=g->adjlist[i].firstarc;
g->adjlist[i].firstarc=p;
}
}