方便测试就把节点的权值去掉了,比较简单就不多讲
#include<iostream>
using namespace std;
//用的是头插法
int n, m;
struct edge
{
int to, next, w;
}e[1000]; //head是每组的第一个
int head[30]; //头,第一次输入的edge总是指向头(-1,用来判断引用结束),有点反常识,也用来存放当前
int cnt = 1; //最后一次进入的head[]的数量
void add(int from, int to)
{
e[cnt].to = to;
//e[cnt].w = w;
e[cnt].next = head[from];
head[from] = cnt++;
}
int main()
{
cin >> n >> m; //点和边数
memset(head,-1,sizeof(head));
int from, to,w; //from记录当前组
for (int i = 0; i < m; i++)
{
cin >> from >> to;
add(from,to);
}
cout << "遍历" << endl;
for (int i = 1; i <= n; i++)
{
int temp = head[i];
while (temp != -1)
{
cout << i << " " << e[temp].to;
temp = e[temp].next;
}
cout << endl;
}
return 0;
}
这个建表法风评好像很差(狗头)