关于邻接表的Sample代码
从月光大牛那抢来的代码 研究了一晚上 把注释都补上了 邻接表真是强大哈
1
#include<iostream>//读入,并输出
2
using namespace std;
3
4
const long LMAX=2000;
5
struct node
6
{
7
int v;
8
int next;
9
}s[LMAX];//边
10
int p[LMAX];//点对应下标 值为边
11
int Index,m,n,x,y;//m点数,n边数
12
13
void init()
14
{
15
memset(p,-1,sizeof(p));
16
Index=0;
17
for(int i=0;i<n;i++)
18
{
19
scanf("%d%d",&x,&y);
20
s[Index].next=p[x];//保存原先x所在边的序号
21
s[Index].v=y;//设置另一端的点 (x)----------->(y) p[x]=index
22
p[x]=Index++;// 更新并记录点x所在边序号为当前边 (index)
23
//上述操作将一个自该点出发而邻接的有向边链接成表
24
}
25
}
26
27
void print()
28
{
29
for(int i=0;i<m;i++)
30
{
31
printf("%d:",i);
32
for(int j=p[i];j!=-1;j=s[j].next)
33
printf(" -> %d",s[j].v);
34
printf("\n");
35
}
36
}
37
38
int main()
39
{
40
while(scanf("%d%d",&m,&n)!=EOF)
41
{
42
init();
43
print();
44
}
45
return 0;
46
}

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46
