答案
#include<iostream>
using namespace std;
#define N 100
typedef struct arcnode {
int ad;
arcnode* nextarc;
int info;
}arcnode;//边结点
typedef struct vnode {
char date;
arcnode* firstarc;
}vnode, adjlist[N];//表头结点
struct{
adjlist v;
int d, b;
}gra;//图
int main() {
char v1, v2;
int i, j;
int w;//权值
cin >> gra.d >> gra.b;
if (gra.d == 0) {
cout << "error";
return 0;
}
if (gra.d == 1 && gra.b > 0) {
cout << "error";
return 0;
}
for (int i = 0; i < gra.d; i++) {
cin >> gra.v[i].date;
gra.v[i].firstarc = NULL;
}//输入各点,构造表头结点
for (int k = 0; k < gra.b; k++) {
cin >> v1 >> v2 >> w;
i = v1 - gra.v[0].date;
j = v2 - gra.v[0].date;
arcnode *p1 = new arcnode;
p1->ad = j;
p1->nextarc = gra.v[i].firstarc;
gra.v[i].firstarc = p1;
p1->info = w;
}
for (int i = 0; i < gra.d; i++) {
cout << gra.v[i].date;
arcnode* p = gra.v[i].firstarc;
while (p != NULL) {
cout << "->" << p->ad << " " << p->info;
p = p->nextarc;
}
cout << endl;
}
return 0;
}