Add files via upload
parent
6aca581981
commit
e3dfb777cd
@ -0,0 +1,46 @@
|
|||||||
|
10
|
||||||
|
0 1
|
||||||
|
0 2
|
||||||
|
0 3
|
||||||
|
0 4
|
||||||
|
0 5
|
||||||
|
0 6
|
||||||
|
0 7
|
||||||
|
0 8
|
||||||
|
0 9
|
||||||
|
1 2
|
||||||
|
1 3
|
||||||
|
1 4
|
||||||
|
1 5
|
||||||
|
1 6
|
||||||
|
1 7
|
||||||
|
1 8
|
||||||
|
1 9
|
||||||
|
2 3
|
||||||
|
2 4
|
||||||
|
2 5
|
||||||
|
2 6
|
||||||
|
2 7
|
||||||
|
2 8
|
||||||
|
2 9
|
||||||
|
3 4
|
||||||
|
3 5
|
||||||
|
3 6
|
||||||
|
3 7
|
||||||
|
3 8
|
||||||
|
3 9
|
||||||
|
4 5
|
||||||
|
4 6
|
||||||
|
4 7
|
||||||
|
4 8
|
||||||
|
4 9
|
||||||
|
5 6
|
||||||
|
5 7
|
||||||
|
5 8
|
||||||
|
5 9
|
||||||
|
6 7
|
||||||
|
6 8
|
||||||
|
6 9
|
||||||
|
7 8
|
||||||
|
7 9
|
||||||
|
8 9
|
@ -0,0 +1,181 @@
|
|||||||
|
100
|
||||||
|
0 10
|
||||||
|
0 1
|
||||||
|
10 20
|
||||||
|
10 11
|
||||||
|
20 30
|
||||||
|
20 21
|
||||||
|
30 40
|
||||||
|
30 31
|
||||||
|
40 50
|
||||||
|
40 41
|
||||||
|
50 60
|
||||||
|
50 51
|
||||||
|
60 70
|
||||||
|
60 61
|
||||||
|
70 80
|
||||||
|
70 71
|
||||||
|
80 90
|
||||||
|
80 81
|
||||||
|
1 11
|
||||||
|
1 2
|
||||||
|
11 21
|
||||||
|
11 12
|
||||||
|
21 31
|
||||||
|
21 22
|
||||||
|
31 41
|
||||||
|
31 32
|
||||||
|
41 51
|
||||||
|
41 42
|
||||||
|
51 61
|
||||||
|
51 52
|
||||||
|
61 71
|
||||||
|
61 62
|
||||||
|
71 81
|
||||||
|
71 72
|
||||||
|
81 91
|
||||||
|
81 82
|
||||||
|
2 12
|
||||||
|
2 3
|
||||||
|
12 22
|
||||||
|
12 13
|
||||||
|
22 32
|
||||||
|
22 23
|
||||||
|
32 42
|
||||||
|
32 33
|
||||||
|
42 52
|
||||||
|
42 43
|
||||||
|
52 62
|
||||||
|
52 53
|
||||||
|
62 72
|
||||||
|
62 63
|
||||||
|
72 82
|
||||||
|
72 73
|
||||||
|
82 92
|
||||||
|
82 83
|
||||||
|
3 13
|
||||||
|
3 4
|
||||||
|
13 23
|
||||||
|
13 14
|
||||||
|
23 33
|
||||||
|
23 24
|
||||||
|
33 43
|
||||||
|
33 34
|
||||||
|
43 53
|
||||||
|
43 44
|
||||||
|
53 63
|
||||||
|
53 54
|
||||||
|
63 73
|
||||||
|
63 64
|
||||||
|
73 83
|
||||||
|
73 74
|
||||||
|
83 93
|
||||||
|
83 84
|
||||||
|
4 14
|
||||||
|
4 5
|
||||||
|
14 24
|
||||||
|
14 15
|
||||||
|
24 34
|
||||||
|
24 25
|
||||||
|
34 44
|
||||||
|
34 35
|
||||||
|
44 54
|
||||||
|
44 45
|
||||||
|
54 64
|
||||||
|
54 55
|
||||||
|
64 74
|
||||||
|
64 65
|
||||||
|
74 84
|
||||||
|
74 75
|
||||||
|
84 94
|
||||||
|
84 85
|
||||||
|
5 15
|
||||||
|
5 6
|
||||||
|
15 25
|
||||||
|
15 16
|
||||||
|
25 35
|
||||||
|
25 26
|
||||||
|
35 45
|
||||||
|
35 36
|
||||||
|
45 55
|
||||||
|
45 46
|
||||||
|
55 65
|
||||||
|
55 56
|
||||||
|
65 75
|
||||||
|
65 66
|
||||||
|
75 85
|
||||||
|
75 76
|
||||||
|
85 95
|
||||||
|
85 86
|
||||||
|
6 16
|
||||||
|
6 7
|
||||||
|
16 26
|
||||||
|
16 17
|
||||||
|
26 36
|
||||||
|
26 27
|
||||||
|
36 46
|
||||||
|
36 37
|
||||||
|
46 56
|
||||||
|
46 47
|
||||||
|
56 66
|
||||||
|
56 57
|
||||||
|
66 76
|
||||||
|
66 67
|
||||||
|
76 86
|
||||||
|
76 77
|
||||||
|
86 96
|
||||||
|
86 87
|
||||||
|
7 17
|
||||||
|
7 8
|
||||||
|
17 27
|
||||||
|
17 18
|
||||||
|
27 37
|
||||||
|
27 28
|
||||||
|
37 47
|
||||||
|
37 38
|
||||||
|
47 57
|
||||||
|
47 48
|
||||||
|
57 67
|
||||||
|
57 58
|
||||||
|
67 77
|
||||||
|
67 68
|
||||||
|
77 87
|
||||||
|
77 78
|
||||||
|
87 97
|
||||||
|
87 88
|
||||||
|
8 18
|
||||||
|
8 9
|
||||||
|
18 28
|
||||||
|
18 19
|
||||||
|
28 38
|
||||||
|
28 29
|
||||||
|
38 48
|
||||||
|
38 39
|
||||||
|
48 58
|
||||||
|
48 49
|
||||||
|
58 68
|
||||||
|
58 59
|
||||||
|
68 78
|
||||||
|
68 69
|
||||||
|
78 88
|
||||||
|
78 79
|
||||||
|
88 98
|
||||||
|
88 89
|
||||||
|
9 19
|
||||||
|
19 29
|
||||||
|
29 39
|
||||||
|
39 49
|
||||||
|
49 59
|
||||||
|
59 69
|
||||||
|
69 79
|
||||||
|
79 89
|
||||||
|
89 99
|
||||||
|
90 91
|
||||||
|
91 92
|
||||||
|
92 93
|
||||||
|
93 94
|
||||||
|
94 95
|
||||||
|
95 96
|
||||||
|
96 97
|
||||||
|
97 98
|
||||||
|
98 99
|
@ -0,0 +1,127 @@
|
|||||||
|
127
|
||||||
|
0 1
|
||||||
|
0 2
|
||||||
|
1 3
|
||||||
|
1 4
|
||||||
|
2 5
|
||||||
|
2 6
|
||||||
|
3 7
|
||||||
|
3 8
|
||||||
|
4 9
|
||||||
|
4 10
|
||||||
|
5 11
|
||||||
|
5 12
|
||||||
|
6 13
|
||||||
|
6 14
|
||||||
|
7 15
|
||||||
|
7 16
|
||||||
|
8 17
|
||||||
|
8 18
|
||||||
|
9 19
|
||||||
|
9 20
|
||||||
|
10 21
|
||||||
|
10 22
|
||||||
|
11 23
|
||||||
|
11 24
|
||||||
|
12 25
|
||||||
|
12 26
|
||||||
|
13 27
|
||||||
|
13 28
|
||||||
|
14 29
|
||||||
|
14 30
|
||||||
|
15 31
|
||||||
|
15 32
|
||||||
|
16 33
|
||||||
|
16 34
|
||||||
|
17 35
|
||||||
|
17 36
|
||||||
|
18 37
|
||||||
|
18 38
|
||||||
|
19 39
|
||||||
|
19 40
|
||||||
|
20 41
|
||||||
|
20 42
|
||||||
|
21 43
|
||||||
|
21 44
|
||||||
|
22 45
|
||||||
|
22 46
|
||||||
|
23 47
|
||||||
|
23 48
|
||||||
|
24 49
|
||||||
|
24 50
|
||||||
|
25 51
|
||||||
|
25 52
|
||||||
|
26 53
|
||||||
|
26 54
|
||||||
|
27 55
|
||||||
|
27 56
|
||||||
|
28 57
|
||||||
|
28 58
|
||||||
|
29 59
|
||||||
|
29 60
|
||||||
|
30 61
|
||||||
|
30 62
|
||||||
|
31 63
|
||||||
|
31 64
|
||||||
|
32 65
|
||||||
|
32 66
|
||||||
|
33 67
|
||||||
|
33 68
|
||||||
|
34 69
|
||||||
|
34 70
|
||||||
|
35 71
|
||||||
|
35 72
|
||||||
|
36 73
|
||||||
|
36 74
|
||||||
|
37 75
|
||||||
|
37 76
|
||||||
|
38 77
|
||||||
|
38 78
|
||||||
|
39 79
|
||||||
|
39 80
|
||||||
|
40 81
|
||||||
|
40 82
|
||||||
|
41 83
|
||||||
|
41 84
|
||||||
|
42 85
|
||||||
|
42 86
|
||||||
|
43 87
|
||||||
|
43 88
|
||||||
|
44 89
|
||||||
|
44 90
|
||||||
|
45 91
|
||||||
|
45 92
|
||||||
|
46 93
|
||||||
|
46 94
|
||||||
|
47 95
|
||||||
|
47 96
|
||||||
|
48 97
|
||||||
|
48 98
|
||||||
|
49 99
|
||||||
|
49 100
|
||||||
|
50 101
|
||||||
|
50 102
|
||||||
|
51 103
|
||||||
|
51 104
|
||||||
|
52 105
|
||||||
|
52 106
|
||||||
|
53 107
|
||||||
|
53 108
|
||||||
|
54 109
|
||||||
|
54 110
|
||||||
|
55 111
|
||||||
|
55 112
|
||||||
|
56 113
|
||||||
|
56 114
|
||||||
|
57 115
|
||||||
|
57 116
|
||||||
|
58 117
|
||||||
|
58 118
|
||||||
|
59 119
|
||||||
|
59 120
|
||||||
|
60 121
|
||||||
|
60 122
|
||||||
|
61 123
|
||||||
|
61 124
|
||||||
|
62 125
|
||||||
|
62 126
|
@ -0,0 +1,436 @@
|
|||||||
|
30
|
||||||
|
0 1
|
||||||
|
0 2
|
||||||
|
0 3
|
||||||
|
0 4
|
||||||
|
0 5
|
||||||
|
0 6
|
||||||
|
0 7
|
||||||
|
0 8
|
||||||
|
0 9
|
||||||
|
0 10
|
||||||
|
0 11
|
||||||
|
0 12
|
||||||
|
0 13
|
||||||
|
0 14
|
||||||
|
0 15
|
||||||
|
0 16
|
||||||
|
0 17
|
||||||
|
0 18
|
||||||
|
0 19
|
||||||
|
0 20
|
||||||
|
0 21
|
||||||
|
0 22
|
||||||
|
0 23
|
||||||
|
0 24
|
||||||
|
0 25
|
||||||
|
0 26
|
||||||
|
0 27
|
||||||
|
0 28
|
||||||
|
0 29
|
||||||
|
1 2
|
||||||
|
1 3
|
||||||
|
1 4
|
||||||
|
1 5
|
||||||
|
1 6
|
||||||
|
1 7
|
||||||
|
1 8
|
||||||
|
1 9
|
||||||
|
1 10
|
||||||
|
1 11
|
||||||
|
1 12
|
||||||
|
1 13
|
||||||
|
1 14
|
||||||
|
1 15
|
||||||
|
1 16
|
||||||
|
1 17
|
||||||
|
1 18
|
||||||
|
1 19
|
||||||
|
1 20
|
||||||
|
1 21
|
||||||
|
1 22
|
||||||
|
1 23
|
||||||
|
1 24
|
||||||
|
1 25
|
||||||
|
1 26
|
||||||
|
1 27
|
||||||
|
1 28
|
||||||
|
1 29
|
||||||
|
2 3
|
||||||
|
2 4
|
||||||
|
2 5
|
||||||
|
2 6
|
||||||
|
2 7
|
||||||
|
2 8
|
||||||
|
2 9
|
||||||
|
2 10
|
||||||
|
2 11
|
||||||
|
2 12
|
||||||
|
2 13
|
||||||
|
2 14
|
||||||
|
2 15
|
||||||
|
2 16
|
||||||
|
2 17
|
||||||
|
2 18
|
||||||
|
2 19
|
||||||
|
2 20
|
||||||
|
2 21
|
||||||
|
2 22
|
||||||
|
2 23
|
||||||
|
2 24
|
||||||
|
2 25
|
||||||
|
2 26
|
||||||
|
2 27
|
||||||
|
2 28
|
||||||
|
2 29
|
||||||
|
3 4
|
||||||
|
3 5
|
||||||
|
3 6
|
||||||
|
3 7
|
||||||
|
3 8
|
||||||
|
3 9
|
||||||
|
3 10
|
||||||
|
3 11
|
||||||
|
3 12
|
||||||
|
3 13
|
||||||
|
3 14
|
||||||
|
3 15
|
||||||
|
3 16
|
||||||
|
3 17
|
||||||
|
3 18
|
||||||
|
3 19
|
||||||
|
3 20
|
||||||
|
3 21
|
||||||
|
3 22
|
||||||
|
3 23
|
||||||
|
3 24
|
||||||
|
3 25
|
||||||
|
3 26
|
||||||
|
3 27
|
||||||
|
3 28
|
||||||
|
3 29
|
||||||
|
4 5
|
||||||
|
4 6
|
||||||
|
4 7
|
||||||
|
4 8
|
||||||
|
4 9
|
||||||
|
4 10
|
||||||
|
4 11
|
||||||
|
4 12
|
||||||
|
4 13
|
||||||
|
4 14
|
||||||
|
4 15
|
||||||
|
4 16
|
||||||
|
4 17
|
||||||
|
4 18
|
||||||
|
4 19
|
||||||
|
4 20
|
||||||
|
4 21
|
||||||
|
4 22
|
||||||
|
4 23
|
||||||
|
4 24
|
||||||
|
4 25
|
||||||
|
4 26
|
||||||
|
4 27
|
||||||
|
4 28
|
||||||
|
4 29
|
||||||
|
5 6
|
||||||
|
5 7
|
||||||
|
5 8
|
||||||
|
5 9
|
||||||
|
5 10
|
||||||
|
5 11
|
||||||
|
5 12
|
||||||
|
5 13
|
||||||
|
5 14
|
||||||
|
5 15
|
||||||
|
5 16
|
||||||
|
5 17
|
||||||
|
5 18
|
||||||
|
5 19
|
||||||
|
5 20
|
||||||
|
5 21
|
||||||
|
5 22
|
||||||
|
5 23
|
||||||
|
5 24
|
||||||
|
5 25
|
||||||
|
5 26
|
||||||
|
5 27
|
||||||
|
5 28
|
||||||
|
5 29
|
||||||
|
6 7
|
||||||
|
6 8
|
||||||
|
6 9
|
||||||
|
6 10
|
||||||
|
6 11
|
||||||
|
6 12
|
||||||
|
6 13
|
||||||
|
6 14
|
||||||
|
6 15
|
||||||
|
6 16
|
||||||
|
6 17
|
||||||
|
6 18
|
||||||
|
6 19
|
||||||
|
6 20
|
||||||
|
6 21
|
||||||
|
6 22
|
||||||
|
6 23
|
||||||
|
6 24
|
||||||
|
6 25
|
||||||
|
6 26
|
||||||
|
6 27
|
||||||
|
6 28
|
||||||
|
6 29
|
||||||
|
7 8
|
||||||
|
7 9
|
||||||
|
7 10
|
||||||
|
7 11
|
||||||
|
7 12
|
||||||
|
7 13
|
||||||
|
7 14
|
||||||
|
7 15
|
||||||
|
7 16
|
||||||
|
7 17
|
||||||
|
7 18
|
||||||
|
7 19
|
||||||
|
7 20
|
||||||
|
7 21
|
||||||
|
7 22
|
||||||
|
7 23
|
||||||
|
7 24
|
||||||
|
7 25
|
||||||
|
7 26
|
||||||
|
7 27
|
||||||
|
7 28
|
||||||
|
7 29
|
||||||
|
8 9
|
||||||
|
8 10
|
||||||
|
8 11
|
||||||
|
8 12
|
||||||
|
8 13
|
||||||
|
8 14
|
||||||
|
8 15
|
||||||
|
8 16
|
||||||
|
8 17
|
||||||
|
8 18
|
||||||
|
8 19
|
||||||
|
8 20
|
||||||
|
8 21
|
||||||
|
8 22
|
||||||
|
8 23
|
||||||
|
8 24
|
||||||
|
8 25
|
||||||
|
8 26
|
||||||
|
8 27
|
||||||
|
8 28
|
||||||
|
8 29
|
||||||
|
9 10
|
||||||
|
9 11
|
||||||
|
9 12
|
||||||
|
9 13
|
||||||
|
9 14
|
||||||
|
9 15
|
||||||
|
9 16
|
||||||
|
9 17
|
||||||
|
9 18
|
||||||
|
9 19
|
||||||
|
9 20
|
||||||
|
9 21
|
||||||
|
9 22
|
||||||
|
9 23
|
||||||
|
9 24
|
||||||
|
9 25
|
||||||
|
9 26
|
||||||
|
9 27
|
||||||
|
9 28
|
||||||
|
9 29
|
||||||
|
10 11
|
||||||
|
10 12
|
||||||
|
10 13
|
||||||
|
10 14
|
||||||
|
10 15
|
||||||
|
10 16
|
||||||
|
10 17
|
||||||
|
10 18
|
||||||
|
10 19
|
||||||
|
10 20
|
||||||
|
10 21
|
||||||
|
10 22
|
||||||
|
10 23
|
||||||
|
10 24
|
||||||
|
10 25
|
||||||
|
10 26
|
||||||
|
10 27
|
||||||
|
10 28
|
||||||
|
10 29
|
||||||
|
11 12
|
||||||
|
11 13
|
||||||
|
11 14
|
||||||
|
11 15
|
||||||
|
11 16
|
||||||
|
11 17
|
||||||
|
11 18
|
||||||
|
11 19
|
||||||
|
11 20
|
||||||
|
11 21
|
||||||
|
11 22
|
||||||
|
11 23
|
||||||
|
11 24
|
||||||
|
11 25
|
||||||
|
11 26
|
||||||
|
11 27
|
||||||
|
11 28
|
||||||
|
11 29
|
||||||
|
12 13
|
||||||
|
12 14
|
||||||
|
12 15
|
||||||
|
12 16
|
||||||
|
12 17
|
||||||
|
12 18
|
||||||
|
12 19
|
||||||
|
12 20
|
||||||
|
12 21
|
||||||
|
12 22
|
||||||
|
12 23
|
||||||
|
12 24
|
||||||
|
12 25
|
||||||
|
12 26
|
||||||
|
12 27
|
||||||
|
12 28
|
||||||
|
12 29
|
||||||
|
13 14
|
||||||
|
13 15
|
||||||
|
13 16
|
||||||
|
13 17
|
||||||
|
13 18
|
||||||
|
13 19
|
||||||
|
13 20
|
||||||
|
13 21
|
||||||
|
13 22
|
||||||
|
13 23
|
||||||
|
13 24
|
||||||
|
13 25
|
||||||
|
13 26
|
||||||
|
13 27
|
||||||
|
13 28
|
||||||
|
13 29
|
||||||
|
14 15
|
||||||
|
14 16
|
||||||
|
14 17
|
||||||
|
14 18
|
||||||
|
14 19
|
||||||
|
14 20
|
||||||
|
14 21
|
||||||
|
14 22
|
||||||
|
14 23
|
||||||
|
14 24
|
||||||
|
14 25
|
||||||
|
14 26
|
||||||
|
14 27
|
||||||
|
14 28
|
||||||
|
14 29
|
||||||
|
15 16
|
||||||
|
15 17
|
||||||
|
15 18
|
||||||
|
15 19
|
||||||
|
15 20
|
||||||
|
15 21
|
||||||
|
15 22
|
||||||
|
15 23
|
||||||
|
15 24
|
||||||
|
15 25
|
||||||
|
15 26
|
||||||
|
15 27
|
||||||
|
15 28
|
||||||
|
15 29
|
||||||
|
16 17
|
||||||
|
16 18
|
||||||
|
16 19
|
||||||
|
16 20
|
||||||
|
16 21
|
||||||
|
16 22
|
||||||
|
16 23
|
||||||
|
16 24
|
||||||
|
16 25
|
||||||
|
16 26
|
||||||
|
16 27
|
||||||
|
16 28
|
||||||
|
16 29
|
||||||
|
17 18
|
||||||
|
17 19
|
||||||
|
17 20
|
||||||
|
17 21
|
||||||
|
17 22
|
||||||
|
17 23
|
||||||
|
17 24
|
||||||
|
17 25
|
||||||
|
17 26
|
||||||
|
17 27
|
||||||
|
17 28
|
||||||
|
17 29
|
||||||
|
18 19
|
||||||
|
18 20
|
||||||
|
18 21
|
||||||
|
18 22
|
||||||
|
18 23
|
||||||
|
18 24
|
||||||
|
18 25
|
||||||
|
18 26
|
||||||
|
18 27
|
||||||
|
18 28
|
||||||
|
18 29
|
||||||
|
19 20
|
||||||
|
19 21
|
||||||
|
19 22
|
||||||
|
19 23
|
||||||
|
19 24
|
||||||
|
19 25
|
||||||
|
19 26
|
||||||
|
19 27
|
||||||
|
19 28
|
||||||
|
19 29
|
||||||
|
20 21
|
||||||
|
20 22
|
||||||
|
20 23
|
||||||
|
20 24
|
||||||
|
20 25
|
||||||
|
20 26
|
||||||
|
20 27
|
||||||
|
20 28
|
||||||
|
20 29
|
||||||
|
21 22
|
||||||
|
21 23
|
||||||
|
21 24
|
||||||
|
21 25
|
||||||
|
21 26
|
||||||
|
21 27
|
||||||
|
21 28
|
||||||
|
21 29
|
||||||
|
22 23
|
||||||
|
22 24
|
||||||
|
22 25
|
||||||
|
22 26
|
||||||
|
22 27
|
||||||
|
22 28
|
||||||
|
22 29
|
||||||
|
23 24
|
||||||
|
23 25
|
||||||
|
23 26
|
||||||
|
23 27
|
||||||
|
23 28
|
||||||
|
23 29
|
||||||
|
24 25
|
||||||
|
24 26
|
||||||
|
24 27
|
||||||
|
24 28
|
||||||
|
24 29
|
||||||
|
25 26
|
||||||
|
25 27
|
||||||
|
25 28
|
||||||
|
25 29
|
||||||
|
26 27
|
||||||
|
26 28
|
||||||
|
26 29
|
||||||
|
27 28
|
||||||
|
27 29
|
||||||
|
28 29
|
@ -0,0 +1,31 @@
|
|||||||
|
30
|
||||||
|
0 1
|
||||||
|
1 2
|
||||||
|
2 3
|
||||||
|
3 4
|
||||||
|
4 5
|
||||||
|
5 6
|
||||||
|
6 7
|
||||||
|
7 8
|
||||||
|
8 9
|
||||||
|
9 10
|
||||||
|
10 11
|
||||||
|
11 12
|
||||||
|
12 13
|
||||||
|
13 14
|
||||||
|
14 15
|
||||||
|
15 16
|
||||||
|
16 17
|
||||||
|
17 18
|
||||||
|
18 19
|
||||||
|
19 20
|
||||||
|
20 21
|
||||||
|
21 22
|
||||||
|
22 23
|
||||||
|
23 24
|
||||||
|
24 25
|
||||||
|
25 26
|
||||||
|
26 27
|
||||||
|
27 28
|
||||||
|
28 29
|
||||||
|
29 0
|
@ -0,0 +1,31 @@
|
|||||||
|
31
|
||||||
|
0 1
|
||||||
|
0 2
|
||||||
|
1 3
|
||||||
|
1 4
|
||||||
|
2 5
|
||||||
|
2 6
|
||||||
|
3 7
|
||||||
|
3 8
|
||||||
|
4 9
|
||||||
|
4 10
|
||||||
|
5 11
|
||||||
|
5 12
|
||||||
|
6 13
|
||||||
|
6 14
|
||||||
|
7 15
|
||||||
|
7 16
|
||||||
|
8 17
|
||||||
|
8 18
|
||||||
|
9 19
|
||||||
|
9 20
|
||||||
|
10 21
|
||||||
|
10 22
|
||||||
|
11 23
|
||||||
|
11 24
|
||||||
|
12 25
|
||||||
|
12 26
|
||||||
|
13 27
|
||||||
|
13 28
|
||||||
|
14 29
|
||||||
|
14 30
|
@ -0,0 +1,65 @@
|
|||||||
|
33
|
||||||
|
0 1
|
||||||
|
1 2
|
||||||
|
2 3
|
||||||
|
3 4
|
||||||
|
4 5
|
||||||
|
5 6
|
||||||
|
6 7
|
||||||
|
7 8
|
||||||
|
8 9
|
||||||
|
9 10
|
||||||
|
10 11
|
||||||
|
11 12
|
||||||
|
12 13
|
||||||
|
13 14
|
||||||
|
14 15
|
||||||
|
15 16
|
||||||
|
16 17
|
||||||
|
17 18
|
||||||
|
18 19
|
||||||
|
19 20
|
||||||
|
20 21
|
||||||
|
21 22
|
||||||
|
22 23
|
||||||
|
23 24
|
||||||
|
24 25
|
||||||
|
25 26
|
||||||
|
26 27
|
||||||
|
27 28
|
||||||
|
28 29
|
||||||
|
29 30
|
||||||
|
30 31
|
||||||
|
31 0
|
||||||
|
0 32
|
||||||
|
1 32
|
||||||
|
2 32
|
||||||
|
3 32
|
||||||
|
4 32
|
||||||
|
5 32
|
||||||
|
6 32
|
||||||
|
7 32
|
||||||
|
8 32
|
||||||
|
9 32
|
||||||
|
10 32
|
||||||
|
11 32
|
||||||
|
12 32
|
||||||
|
13 32
|
||||||
|
14 32
|
||||||
|
15 32
|
||||||
|
16 32
|
||||||
|
17 32
|
||||||
|
18 32
|
||||||
|
19 32
|
||||||
|
20 32
|
||||||
|
21 32
|
||||||
|
22 32
|
||||||
|
23 32
|
||||||
|
24 32
|
||||||
|
25 32
|
||||||
|
26 32
|
||||||
|
27 32
|
||||||
|
28 32
|
||||||
|
29 32
|
||||||
|
30 32
|
||||||
|
31 32
|
@ -0,0 +1,13 @@
|
|||||||
|
9
|
||||||
|
0 3
|
||||||
|
0 1
|
||||||
|
3 6
|
||||||
|
3 4
|
||||||
|
1 4
|
||||||
|
1 2
|
||||||
|
4 7
|
||||||
|
4 5
|
||||||
|
2 5
|
||||||
|
5 8
|
||||||
|
6 7
|
||||||
|
7 8
|
@ -0,0 +1,50 @@
|
|||||||
|
50
|
||||||
|
0 1
|
||||||
|
1 2
|
||||||
|
2 3
|
||||||
|
3 4
|
||||||
|
4 5
|
||||||
|
5 6
|
||||||
|
6 7
|
||||||
|
7 8
|
||||||
|
8 9
|
||||||
|
9 10
|
||||||
|
10 11
|
||||||
|
11 12
|
||||||
|
12 13
|
||||||
|
13 14
|
||||||
|
14 15
|
||||||
|
15 16
|
||||||
|
16 17
|
||||||
|
17 18
|
||||||
|
18 19
|
||||||
|
19 20
|
||||||
|
20 21
|
||||||
|
21 22
|
||||||
|
22 23
|
||||||
|
23 24
|
||||||
|
24 25
|
||||||
|
25 26
|
||||||
|
26 27
|
||||||
|
27 28
|
||||||
|
28 29
|
||||||
|
29 30
|
||||||
|
30 31
|
||||||
|
31 32
|
||||||
|
32 33
|
||||||
|
33 34
|
||||||
|
34 35
|
||||||
|
35 36
|
||||||
|
36 37
|
||||||
|
37 38
|
||||||
|
38 39
|
||||||
|
39 40
|
||||||
|
40 41
|
||||||
|
41 42
|
||||||
|
42 43
|
||||||
|
43 44
|
||||||
|
44 45
|
||||||
|
45 46
|
||||||
|
46 47
|
||||||
|
47 48
|
||||||
|
48 49
|
@ -0,0 +1,41 @@
|
|||||||
|
25
|
||||||
|
0 5
|
||||||
|
0 1
|
||||||
|
5 10
|
||||||
|
5 6
|
||||||
|
10 15
|
||||||
|
10 11
|
||||||
|
15 20
|
||||||
|
15 16
|
||||||
|
1 6
|
||||||
|
1 2
|
||||||
|
6 11
|
||||||
|
6 7
|
||||||
|
11 16
|
||||||
|
11 12
|
||||||
|
16 21
|
||||||
|
16 17
|
||||||
|
2 7
|
||||||
|
2 3
|
||||||
|
7 12
|
||||||
|
7 8
|
||||||
|
12 17
|
||||||
|
12 13
|
||||||
|
17 22
|
||||||
|
17 18
|
||||||
|
3 8
|
||||||
|
3 4
|
||||||
|
8 13
|
||||||
|
8 9
|
||||||
|
13 18
|
||||||
|
13 14
|
||||||
|
18 23
|
||||||
|
18 19
|
||||||
|
4 9
|
||||||
|
9 14
|
||||||
|
14 19
|
||||||
|
19 24
|
||||||
|
20 21
|
||||||
|
21 22
|
||||||
|
22 23
|
||||||
|
23 24
|
@ -0,0 +1,61 @@
|
|||||||
|
60
|
||||||
|
0 1
|
||||||
|
1 2
|
||||||
|
2 3
|
||||||
|
3 4
|
||||||
|
4 5
|
||||||
|
5 6
|
||||||
|
6 7
|
||||||
|
7 8
|
||||||
|
8 9
|
||||||
|
9 10
|
||||||
|
10 11
|
||||||
|
11 12
|
||||||
|
12 13
|
||||||
|
13 14
|
||||||
|
14 15
|
||||||
|
15 16
|
||||||
|
16 17
|
||||||
|
17 18
|
||||||
|
18 19
|
||||||
|
19 20
|
||||||
|
20 21
|
||||||
|
21 22
|
||||||
|
22 23
|
||||||
|
23 24
|
||||||
|
24 25
|
||||||
|
25 26
|
||||||
|
26 27
|
||||||
|
27 28
|
||||||
|
28 29
|
||||||
|
29 30
|
||||||
|
30 31
|
||||||
|
31 32
|
||||||
|
32 33
|
||||||
|
33 34
|
||||||
|
34 35
|
||||||
|
35 36
|
||||||
|
36 37
|
||||||
|
37 38
|
||||||
|
38 39
|
||||||
|
39 40
|
||||||
|
40 41
|
||||||
|
41 42
|
||||||
|
42 43
|
||||||
|
43 44
|
||||||
|
44 45
|
||||||
|
45 46
|
||||||
|
46 47
|
||||||
|
47 48
|
||||||
|
48 49
|
||||||
|
49 50
|
||||||
|
50 51
|
||||||
|
51 52
|
||||||
|
52 53
|
||||||
|
53 54
|
||||||
|
54 55
|
||||||
|
55 56
|
||||||
|
56 57
|
||||||
|
57 58
|
||||||
|
58 59
|
||||||
|
59 0
|
@ -0,0 +1,63 @@
|
|||||||
|
63
|
||||||
|
0 1
|
||||||
|
0 2
|
||||||
|
1 3
|
||||||
|
1 4
|
||||||
|
2 5
|
||||||
|
2 6
|
||||||
|
3 7
|
||||||
|
3 8
|
||||||
|
4 9
|
||||||
|
4 10
|
||||||
|
5 11
|
||||||
|
5 12
|
||||||
|
6 13
|
||||||
|
6 14
|
||||||
|
7 15
|
||||||
|
7 16
|
||||||
|
8 17
|
||||||
|
8 18
|
||||||
|
9 19
|
||||||
|
9 20
|
||||||
|
10 21
|
||||||
|
10 22
|
||||||
|
11 23
|
||||||
|
11 24
|
||||||
|
12 25
|
||||||
|
12 26
|
||||||
|
13 27
|
||||||
|
13 28
|
||||||
|
14 29
|
||||||
|
14 30
|
||||||
|
15 31
|
||||||
|
15 32
|
||||||
|
16 33
|
||||||
|
16 34
|
||||||
|
17 35
|
||||||
|
17 36
|
||||||
|
18 37
|
||||||
|
18 38
|
||||||
|
19 39
|
||||||
|
19 40
|
||||||
|
20 41
|
||||||
|
20 42
|
||||||
|
21 43
|
||||||
|
21 44
|
||||||
|
22 45
|
||||||
|
22 46
|
||||||
|
23 47
|
||||||
|
23 48
|
||||||
|
24 49
|
||||||
|
24 50
|
||||||
|
25 51
|
||||||
|
25 52
|
||||||
|
26 53
|
||||||
|
26 54
|
||||||
|
27 55
|
||||||
|
27 56
|
||||||
|
28 57
|
||||||
|
28 58
|
||||||
|
29 59
|
||||||
|
29 60
|
||||||
|
30 61
|
||||||
|
30 62
|
@ -0,0 +1,129 @@
|
|||||||
|
65
|
||||||
|
0 1
|
||||||
|
1 2
|
||||||
|
2 3
|
||||||
|
3 4
|
||||||
|
4 5
|
||||||
|
5 6
|
||||||
|
6 7
|
||||||
|
7 8
|
||||||
|
8 9
|
||||||
|
9 10
|
||||||
|
10 11
|
||||||
|
11 12
|
||||||
|
12 13
|
||||||
|
13 14
|
||||||
|
14 15
|
||||||
|
15 16
|
||||||
|
16 17
|
||||||
|
17 18
|
||||||
|
18 19
|
||||||
|
19 20
|
||||||
|
20 21
|
||||||
|
21 22
|
||||||
|
22 23
|
||||||
|
23 24
|
||||||
|
24 25
|
||||||
|
25 26
|
||||||
|
26 27
|
||||||
|
27 28
|
||||||
|
28 29
|
||||||
|
29 30
|
||||||
|
30 31
|
||||||
|
31 32
|
||||||
|
32 33
|
||||||
|
33 34
|
||||||
|
34 35
|
||||||
|
35 36
|
||||||
|
36 37
|
||||||
|
37 38
|
||||||
|
38 39
|
||||||
|
39 40
|
||||||
|
40 41
|
||||||
|
41 42
|
||||||
|
42 43
|
||||||
|
43 44
|
||||||
|
44 45
|
||||||
|
45 46
|
||||||
|
46 47
|
||||||
|
47 48
|
||||||
|
48 49
|
||||||
|
49 50
|
||||||
|
50 51
|
||||||
|
51 52
|
||||||
|
52 53
|
||||||
|
53 54
|
||||||
|
54 55
|
||||||
|
55 56
|
||||||
|
56 57
|
||||||
|
57 58
|
||||||
|
58 59
|
||||||
|
59 60
|
||||||
|
60 61
|
||||||
|
61 62
|
||||||
|
62 63
|
||||||
|
63 0
|
||||||
|
0 64
|
||||||
|
1 64
|
||||||
|
2 64
|
||||||
|
3 64
|
||||||
|
4 64
|
||||||
|
5 64
|
||||||
|
6 64
|
||||||
|
7 64
|
||||||
|
8 64
|
||||||
|
9 64
|
||||||
|
10 64
|
||||||
|
11 64
|
||||||
|
12 64
|
||||||
|
13 64
|
||||||
|
14 64
|
||||||
|
15 64
|
||||||
|
16 64
|
||||||
|
17 64
|
||||||
|
18 64
|
||||||
|
19 64
|
||||||
|
20 64
|
||||||
|
21 64
|
||||||
|
22 64
|
||||||
|
23 64
|
||||||
|
24 64
|
||||||
|
25 64
|
||||||
|
26 64
|
||||||
|
27 64
|
||||||
|
28 64
|
||||||
|
29 64
|
||||||
|
30 64
|
||||||
|
31 64
|
||||||
|
32 64
|
||||||
|
33 64
|
||||||
|
34 64
|
||||||
|
35 64
|
||||||
|
36 64
|
||||||
|
37 64
|
||||||
|
38 64
|
||||||
|
39 64
|
||||||
|
40 64
|
||||||
|
41 64
|
||||||
|
42 64
|
||||||
|
43 64
|
||||||
|
44 64
|
||||||
|
45 64
|
||||||
|
46 64
|
||||||
|
47 64
|
||||||
|
48 64
|
||||||
|
49 64
|
||||||
|
50 64
|
||||||
|
51 64
|
||||||
|
52 64
|
||||||
|
53 64
|
||||||
|
54 64
|
||||||
|
55 64
|
||||||
|
56 64
|
||||||
|
57 64
|
||||||
|
58 64
|
||||||
|
59 64
|
||||||
|
60 64
|
||||||
|
61 64
|
||||||
|
62 64
|
||||||
|
63 64
|
@ -0,0 +1,17 @@
|
|||||||
|
9
|
||||||
|
0 1
|
||||||
|
1 2
|
||||||
|
2 3
|
||||||
|
3 4
|
||||||
|
4 5
|
||||||
|
5 6
|
||||||
|
6 7
|
||||||
|
7 0
|
||||||
|
0 8
|
||||||
|
1 8
|
||||||
|
2 8
|
||||||
|
3 8
|
||||||
|
4 8
|
||||||
|
5 8
|
||||||
|
6 8
|
||||||
|
7 8
|
@ -0,0 +1,919 @@
|
|||||||
|
45
|
||||||
|
2 1
|
||||||
|
3 1
|
||||||
|
3 2
|
||||||
|
4 1
|
||||||
|
4 2
|
||||||
|
4 3
|
||||||
|
5 1
|
||||||
|
5 2
|
||||||
|
5 3
|
||||||
|
5 4
|
||||||
|
6 1
|
||||||
|
6 2
|
||||||
|
6 3
|
||||||
|
6 4
|
||||||
|
6 5
|
||||||
|
7 1
|
||||||
|
7 2
|
||||||
|
7 3
|
||||||
|
7 4
|
||||||
|
7 5
|
||||||
|
7 6
|
||||||
|
8 1
|
||||||
|
8 2
|
||||||
|
8 3
|
||||||
|
8 4
|
||||||
|
8 5
|
||||||
|
8 6
|
||||||
|
8 7
|
||||||
|
9 1
|
||||||
|
9 2
|
||||||
|
9 3
|
||||||
|
9 4
|
||||||
|
9 5
|
||||||
|
9 6
|
||||||
|
9 7
|
||||||
|
9 8
|
||||||
|
10 2
|
||||||
|
10 3
|
||||||
|
10 4
|
||||||
|
10 5
|
||||||
|
10 6
|
||||||
|
10 7
|
||||||
|
10 8
|
||||||
|
10 9
|
||||||
|
11 1
|
||||||
|
11 3
|
||||||
|
11 4
|
||||||
|
11 5
|
||||||
|
11 6
|
||||||
|
11 7
|
||||||
|
11 8
|
||||||
|
11 9
|
||||||
|
12 1
|
||||||
|
12 2
|
||||||
|
12 4
|
||||||
|
12 5
|
||||||
|
12 6
|
||||||
|
12 7
|
||||||
|
12 8
|
||||||
|
12 9
|
||||||
|
13 1
|
||||||
|
13 2
|
||||||
|
13 3
|
||||||
|
13 5
|
||||||
|
13 6
|
||||||
|
13 7
|
||||||
|
13 8
|
||||||
|
13 9
|
||||||
|
13 10
|
||||||
|
13 11
|
||||||
|
13 12
|
||||||
|
14 1
|
||||||
|
14 2
|
||||||
|
14 3
|
||||||
|
14 4
|
||||||
|
14 6
|
||||||
|
14 7
|
||||||
|
14 8
|
||||||
|
14 9
|
||||||
|
14 10
|
||||||
|
14 11
|
||||||
|
14 12
|
||||||
|
15 1
|
||||||
|
15 2
|
||||||
|
15 3
|
||||||
|
15 4
|
||||||
|
15 5
|
||||||
|
15 7
|
||||||
|
15 8
|
||||||
|
15 9
|
||||||
|
15 10
|
||||||
|
15 11
|
||||||
|
15 12
|
||||||
|
16 1
|
||||||
|
16 2
|
||||||
|
16 3
|
||||||
|
16 4
|
||||||
|
16 5
|
||||||
|
16 6
|
||||||
|
16 8
|
||||||
|
16 9
|
||||||
|
16 10
|
||||||
|
16 11
|
||||||
|
16 12
|
||||||
|
16 13
|
||||||
|
16 14
|
||||||
|
16 15
|
||||||
|
17 1
|
||||||
|
17 2
|
||||||
|
17 3
|
||||||
|
17 4
|
||||||
|
17 5
|
||||||
|
17 6
|
||||||
|
17 7
|
||||||
|
17 9
|
||||||
|
17 10
|
||||||
|
17 11
|
||||||
|
17 12
|
||||||
|
17 13
|
||||||
|
17 14
|
||||||
|
17 15
|
||||||
|
18 1
|
||||||
|
18 2
|
||||||
|
18 3
|
||||||
|
18 4
|
||||||
|
18 5
|
||||||
|
18 6
|
||||||
|
18 7
|
||||||
|
18 8
|
||||||
|
18 10
|
||||||
|
18 11
|
||||||
|
18 12
|
||||||
|
18 13
|
||||||
|
18 14
|
||||||
|
18 15
|
||||||
|
19 2
|
||||||
|
19 3
|
||||||
|
19 4
|
||||||
|
19 5
|
||||||
|
19 6
|
||||||
|
19 7
|
||||||
|
19 8
|
||||||
|
19 9
|
||||||
|
19 10
|
||||||
|
19 11
|
||||||
|
19 12
|
||||||
|
19 13
|
||||||
|
19 14
|
||||||
|
19 15
|
||||||
|
19 16
|
||||||
|
19 17
|
||||||
|
19 18
|
||||||
|
20 1
|
||||||
|
20 2
|
||||||
|
20 3
|
||||||
|
20 4
|
||||||
|
20 6
|
||||||
|
20 7
|
||||||
|
20 8
|
||||||
|
20 9
|
||||||
|
20 10
|
||||||
|
20 11
|
||||||
|
20 12
|
||||||
|
20 13
|
||||||
|
20 14
|
||||||
|
20 15
|
||||||
|
20 16
|
||||||
|
20 17
|
||||||
|
20 18
|
||||||
|
21 1
|
||||||
|
21 2
|
||||||
|
21 3
|
||||||
|
21 4
|
||||||
|
21 5
|
||||||
|
21 6
|
||||||
|
21 7
|
||||||
|
21 8
|
||||||
|
21 10
|
||||||
|
21 11
|
||||||
|
21 12
|
||||||
|
21 13
|
||||||
|
21 14
|
||||||
|
21 15
|
||||||
|
21 16
|
||||||
|
21 17
|
||||||
|
21 18
|
||||||
|
22 2
|
||||||
|
22 3
|
||||||
|
22 4
|
||||||
|
22 5
|
||||||
|
22 6
|
||||||
|
22 7
|
||||||
|
22 8
|
||||||
|
22 9
|
||||||
|
22 10
|
||||||
|
22 11
|
||||||
|
22 12
|
||||||
|
22 13
|
||||||
|
22 14
|
||||||
|
22 15
|
||||||
|
22 16
|
||||||
|
22 17
|
||||||
|
22 18
|
||||||
|
22 19
|
||||||
|
22 20
|
||||||
|
22 21
|
||||||
|
23 1
|
||||||
|
23 2
|
||||||
|
23 3
|
||||||
|
23 5
|
||||||
|
23 6
|
||||||
|
23 7
|
||||||
|
23 8
|
||||||
|
23 9
|
||||||
|
23 10
|
||||||
|
23 11
|
||||||
|
23 12
|
||||||
|
23 13
|
||||||
|
23 14
|
||||||
|
23 15
|
||||||
|
23 16
|
||||||
|
23 17
|
||||||
|
23 18
|
||||||
|
23 19
|
||||||
|
23 20
|
||||||
|
23 21
|
||||||
|
24 1
|
||||||
|
24 2
|
||||||
|
24 3
|
||||||
|
24 4
|
||||||
|
24 5
|
||||||
|
24 6
|
||||||
|
24 7
|
||||||
|
24 9
|
||||||
|
24 10
|
||||||
|
24 11
|
||||||
|
24 12
|
||||||
|
24 13
|
||||||
|
24 14
|
||||||
|
24 15
|
||||||
|
24 16
|
||||||
|
24 17
|
||||||
|
24 18
|
||||||
|
24 19
|
||||||
|
24 20
|
||||||
|
24 21
|
||||||
|
25 2
|
||||||
|
25 3
|
||||||
|
25 4
|
||||||
|
25 5
|
||||||
|
25 6
|
||||||
|
25 7
|
||||||
|
25 8
|
||||||
|
25 9
|
||||||
|
25 10
|
||||||
|
25 11
|
||||||
|
25 12
|
||||||
|
25 13
|
||||||
|
25 14
|
||||||
|
25 15
|
||||||
|
25 16
|
||||||
|
25 17
|
||||||
|
25 18
|
||||||
|
25 19
|
||||||
|
25 20
|
||||||
|
25 21
|
||||||
|
25 22
|
||||||
|
25 23
|
||||||
|
25 24
|
||||||
|
26 1
|
||||||
|
26 2
|
||||||
|
26 3
|
||||||
|
26 4
|
||||||
|
26 5
|
||||||
|
26 7
|
||||||
|
26 8
|
||||||
|
26 9
|
||||||
|
26 10
|
||||||
|
26 11
|
||||||
|
26 12
|
||||||
|
26 13
|
||||||
|
26 14
|
||||||
|
26 15
|
||||||
|
26 16
|
||||||
|
26 17
|
||||||
|
26 18
|
||||||
|
26 19
|
||||||
|
26 20
|
||||||
|
26 21
|
||||||
|
26 22
|
||||||
|
26 23
|
||||||
|
26 24
|
||||||
|
27 1
|
||||||
|
27 2
|
||||||
|
27 3
|
||||||
|
27 4
|
||||||
|
27 5
|
||||||
|
27 6
|
||||||
|
27 8
|
||||||
|
27 9
|
||||||
|
27 10
|
||||||
|
27 11
|
||||||
|
27 12
|
||||||
|
27 13
|
||||||
|
27 14
|
||||||
|
27 15
|
||||||
|
27 16
|
||||||
|
27 17
|
||||||
|
27 18
|
||||||
|
27 19
|
||||||
|
27 20
|
||||||
|
27 21
|
||||||
|
27 22
|
||||||
|
27 23
|
||||||
|
27 24
|
||||||
|
28 1
|
||||||
|
28 3
|
||||||
|
28 4
|
||||||
|
28 5
|
||||||
|
28 6
|
||||||
|
28 7
|
||||||
|
28 8
|
||||||
|
28 9
|
||||||
|
28 10
|
||||||
|
28 11
|
||||||
|
28 12
|
||||||
|
28 13
|
||||||
|
28 14
|
||||||
|
28 15
|
||||||
|
28 16
|
||||||
|
28 17
|
||||||
|
28 18
|
||||||
|
28 19
|
||||||
|
28 20
|
||||||
|
28 21
|
||||||
|
28 22
|
||||||
|
28 23
|
||||||
|
28 24
|
||||||
|
28 25
|
||||||
|
28 26
|
||||||
|
28 27
|
||||||
|
29 1
|
||||||
|
29 2
|
||||||
|
29 3
|
||||||
|
29 5
|
||||||
|
29 6
|
||||||
|
29 7
|
||||||
|
29 8
|
||||||
|
29 9
|
||||||
|
29 10
|
||||||
|
29 11
|
||||||
|
29 12
|
||||||
|
29 13
|
||||||
|
29 14
|
||||||
|
29 15
|
||||||
|
29 16
|
||||||
|
29 17
|
||||||
|
29 18
|
||||||
|
29 19
|
||||||
|
29 20
|
||||||
|
29 21
|
||||||
|
29 22
|
||||||
|
29 23
|
||||||
|
29 24
|
||||||
|
29 25
|
||||||
|
29 26
|
||||||
|
29 27
|
||||||
|
30 1
|
||||||
|
30 2
|
||||||
|
30 3
|
||||||
|
30 4
|
||||||
|
30 5
|
||||||
|
30 6
|
||||||
|
30 7
|
||||||
|
30 8
|
||||||
|
30 10
|
||||||
|
30 11
|
||||||
|
30 12
|
||||||
|
30 13
|
||||||
|
30 14
|
||||||
|
30 15
|
||||||
|
30 16
|
||||||
|
30 17
|
||||||
|
30 18
|
||||||
|
30 19
|
||||||
|
30 20
|
||||||
|
30 21
|
||||||
|
30 22
|
||||||
|
30 23
|
||||||
|
30 24
|
||||||
|
30 25
|
||||||
|
30 26
|
||||||
|
30 27
|
||||||
|
31 1
|
||||||
|
31 3
|
||||||
|
31 4
|
||||||
|
31 5
|
||||||
|
31 6
|
||||||
|
31 7
|
||||||
|
31 8
|
||||||
|
31 9
|
||||||
|
31 10
|
||||||
|
31 11
|
||||||
|
31 12
|
||||||
|
31 13
|
||||||
|
31 14
|
||||||
|
31 15
|
||||||
|
31 16
|
||||||
|
31 17
|
||||||
|
31 18
|
||||||
|
31 19
|
||||||
|
31 20
|
||||||
|
31 21
|
||||||
|
31 22
|
||||||
|
31 23
|
||||||
|
31 24
|
||||||
|
31 25
|
||||||
|
31 26
|
||||||
|
31 27
|
||||||
|
31 28
|
||||||
|
31 29
|
||||||
|
31 30
|
||||||
|
32 1
|
||||||
|
32 2
|
||||||
|
32 3
|
||||||
|
32 4
|
||||||
|
32 6
|
||||||
|
32 7
|
||||||
|
32 8
|
||||||
|
32 9
|
||||||
|
32 10
|
||||||
|
32 11
|
||||||
|
32 12
|
||||||
|
32 13
|
||||||
|
32 14
|
||||||
|
32 15
|
||||||
|
32 16
|
||||||
|
32 17
|
||||||
|
32 18
|
||||||
|
32 19
|
||||||
|
32 20
|
||||||
|
32 21
|
||||||
|
32 22
|
||||||
|
32 23
|
||||||
|
32 24
|
||||||
|
32 25
|
||||||
|
32 26
|
||||||
|
32 27
|
||||||
|
32 28
|
||||||
|
32 29
|
||||||
|
32 30
|
||||||
|
33 1
|
||||||
|
33 2
|
||||||
|
33 3
|
||||||
|
33 4
|
||||||
|
33 5
|
||||||
|
33 6
|
||||||
|
33 8
|
||||||
|
33 9
|
||||||
|
33 10
|
||||||
|
33 11
|
||||||
|
33 12
|
||||||
|
33 13
|
||||||
|
33 14
|
||||||
|
33 15
|
||||||
|
33 16
|
||||||
|
33 17
|
||||||
|
33 18
|
||||||
|
33 19
|
||||||
|
33 20
|
||||||
|
33 21
|
||||||
|
33 22
|
||||||
|
33 23
|
||||||
|
33 24
|
||||||
|
33 25
|
||||||
|
33 26
|
||||||
|
33 27
|
||||||
|
33 28
|
||||||
|
33 29
|
||||||
|
33 30
|
||||||
|
34 1
|
||||||
|
34 3
|
||||||
|
34 4
|
||||||
|
34 5
|
||||||
|
34 6
|
||||||
|
34 7
|
||||||
|
34 8
|
||||||
|
34 9
|
||||||
|
34 10
|
||||||
|
34 11
|
||||||
|
34 12
|
||||||
|
34 13
|
||||||
|
34 14
|
||||||
|
34 15
|
||||||
|
34 16
|
||||||
|
34 17
|
||||||
|
34 18
|
||||||
|
34 19
|
||||||
|
34 20
|
||||||
|
34 21
|
||||||
|
34 22
|
||||||
|
34 23
|
||||||
|
34 24
|
||||||
|
34 25
|
||||||
|
34 26
|
||||||
|
34 27
|
||||||
|
34 28
|
||||||
|
34 29
|
||||||
|
34 30
|
||||||
|
34 31
|
||||||
|
34 32
|
||||||
|
34 33
|
||||||
|
35 1
|
||||||
|
35 2
|
||||||
|
35 3
|
||||||
|
35 4
|
||||||
|
35 5
|
||||||
|
35 7
|
||||||
|
35 8
|
||||||
|
35 9
|
||||||
|
35 10
|
||||||
|
35 11
|
||||||
|
35 12
|
||||||
|
35 13
|
||||||
|
35 14
|
||||||
|
35 15
|
||||||
|
35 16
|
||||||
|
35 17
|
||||||
|
35 18
|
||||||
|
35 19
|
||||||
|
35 20
|
||||||
|
35 21
|
||||||
|
35 22
|
||||||
|
35 23
|
||||||
|
35 24
|
||||||
|
35 25
|
||||||
|
35 26
|
||||||
|
35 27
|
||||||
|
35 28
|
||||||
|
35 29
|
||||||
|
35 30
|
||||||
|
35 31
|
||||||
|
35 32
|
||||||
|
35 33
|
||||||
|
36 1
|
||||||
|
36 2
|
||||||
|
36 3
|
||||||
|
36 4
|
||||||
|
36 5
|
||||||
|
36 6
|
||||||
|
36 7
|
||||||
|
36 9
|
||||||
|
36 10
|
||||||
|
36 11
|
||||||
|
36 12
|
||||||
|
36 13
|
||||||
|
36 14
|
||||||
|
36 15
|
||||||
|
36 16
|
||||||
|
36 17
|
||||||
|
36 18
|
||||||
|
36 19
|
||||||
|
36 20
|
||||||
|
36 21
|
||||||
|
36 22
|
||||||
|
36 23
|
||||||
|
36 24
|
||||||
|
36 25
|
||||||
|
36 26
|
||||||
|
36 27
|
||||||
|
36 28
|
||||||
|
36 29
|
||||||
|
36 30
|
||||||
|
36 31
|
||||||
|
36 32
|
||||||
|
36 33
|
||||||
|
37 1
|
||||||
|
37 2
|
||||||
|
37 4
|
||||||
|
37 5
|
||||||
|
37 6
|
||||||
|
37 7
|
||||||
|
37 8
|
||||||
|
37 9
|
||||||
|
37 10
|
||||||
|
37 11
|
||||||
|
37 12
|
||||||
|
37 13
|
||||||
|
37 14
|
||||||
|
37 15
|
||||||
|
37 16
|
||||||
|
37 17
|
||||||
|
37 18
|
||||||
|
37 19
|
||||||
|
37 20
|
||||||
|
37 21
|
||||||
|
37 22
|
||||||
|
37 23
|
||||||
|
37 24
|
||||||
|
37 25
|
||||||
|
37 26
|
||||||
|
37 27
|
||||||
|
37 28
|
||||||
|
37 29
|
||||||
|
37 30
|
||||||
|
37 31
|
||||||
|
37 32
|
||||||
|
37 33
|
||||||
|
37 34
|
||||||
|
37 35
|
||||||
|
37 36
|
||||||
|
38 1
|
||||||
|
38 2
|
||||||
|
38 3
|
||||||
|
38 4
|
||||||
|
38 5
|
||||||
|
38 7
|
||||||
|
38 8
|
||||||
|
38 9
|
||||||
|
38 10
|
||||||
|
38 11
|
||||||
|
38 12
|
||||||
|
38 13
|
||||||
|
38 14
|
||||||
|
38 15
|
||||||
|
38 16
|
||||||
|
38 17
|
||||||
|
38 18
|
||||||
|
38 19
|
||||||
|
38 20
|
||||||
|
38 21
|
||||||
|
38 22
|
||||||
|
38 23
|
||||||
|
38 24
|
||||||
|
38 25
|
||||||
|
38 26
|
||||||
|
38 27
|
||||||
|
38 28
|
||||||
|
38 29
|
||||||
|
38 30
|
||||||
|
38 31
|
||||||
|
38 32
|
||||||
|
38 33
|
||||||
|
38 34
|
||||||
|
38 35
|
||||||
|
38 36
|
||||||
|
39 1
|
||||||
|
39 2
|
||||||
|
39 3
|
||||||
|
39 4
|
||||||
|
39 5
|
||||||
|
39 6
|
||||||
|
39 7
|
||||||
|
39 8
|
||||||
|
39 10
|
||||||
|
39 11
|
||||||
|
39 12
|
||||||
|
39 13
|
||||||
|
39 14
|
||||||
|
39 15
|
||||||
|
39 16
|
||||||
|
39 17
|
||||||
|
39 18
|
||||||
|
39 19
|
||||||
|
39 20
|
||||||
|
39 21
|
||||||
|
39 22
|
||||||
|
39 23
|
||||||
|
39 24
|
||||||
|
39 25
|
||||||
|
39 26
|
||||||
|
39 27
|
||||||
|
39 28
|
||||||
|
39 29
|
||||||
|
39 30
|
||||||
|
39 31
|
||||||
|
39 32
|
||||||
|
39 33
|
||||||
|
39 34
|
||||||
|
39 35
|
||||||
|
39 36
|
||||||
|
40 1
|
||||||
|
40 2
|
||||||
|
40 4
|
||||||
|
40 5
|
||||||
|
40 6
|
||||||
|
40 7
|
||||||
|
40 8
|
||||||
|
40 9
|
||||||
|
40 10
|
||||||
|
40 11
|
||||||
|
40 12
|
||||||
|
40 13
|
||||||
|
40 14
|
||||||
|
40 15
|
||||||
|
40 16
|
||||||
|
40 17
|
||||||
|
40 18
|
||||||
|
40 19
|
||||||
|
40 20
|
||||||
|
40 21
|
||||||
|
40 22
|
||||||
|
40 23
|
||||||
|
40 24
|
||||||
|
40 25
|
||||||
|
40 26
|
||||||
|
40 27
|
||||||
|
40 28
|
||||||
|
40 29
|
||||||
|
40 30
|
||||||
|
40 31
|
||||||
|
40 32
|
||||||
|
40 33
|
||||||
|
40 34
|
||||||
|
40 35
|
||||||
|
40 36
|
||||||
|
40 37
|
||||||
|
40 38
|
||||||
|
40 39
|
||||||
|
41 1
|
||||||
|
41 2
|
||||||
|
41 3
|
||||||
|
41 4
|
||||||
|
41 6
|
||||||
|
41 7
|
||||||
|
41 8
|
||||||
|
41 9
|
||||||
|
41 10
|
||||||
|
41 11
|
||||||
|
41 12
|
||||||
|
41 13
|
||||||
|
41 14
|
||||||
|
41 15
|
||||||
|
41 16
|
||||||
|
41 17
|
||||||
|
41 18
|
||||||
|
41 19
|
||||||
|
41 20
|
||||||
|
41 21
|
||||||
|
41 22
|
||||||
|
41 23
|
||||||
|
41 24
|
||||||
|
41 25
|
||||||
|
41 26
|
||||||
|
41 27
|
||||||
|
41 28
|
||||||
|
41 29
|
||||||
|
41 30
|
||||||
|
41 31
|
||||||
|
41 32
|
||||||
|
41 33
|
||||||
|
41 34
|
||||||
|
41 35
|
||||||
|
41 36
|
||||||
|
41 37
|
||||||
|
41 38
|
||||||
|
41 39
|
||||||
|
42 1
|
||||||
|
42 2
|
||||||
|
42 3
|
||||||
|
42 4
|
||||||
|
42 5
|
||||||
|
42 6
|
||||||
|
42 7
|
||||||
|
42 9
|
||||||
|
42 10
|
||||||
|
42 11
|
||||||
|
42 12
|
||||||
|
42 13
|
||||||
|
42 14
|
||||||
|
42 15
|
||||||
|
42 16
|
||||||
|
42 17
|
||||||
|
42 18
|
||||||
|
42 19
|
||||||
|
42 20
|
||||||
|
42 21
|
||||||
|
42 22
|
||||||
|
42 23
|
||||||
|
42 24
|
||||||
|
42 25
|
||||||
|
42 26
|
||||||
|
42 27
|
||||||
|
42 28
|
||||||
|
42 29
|
||||||
|
42 30
|
||||||
|
42 31
|
||||||
|
42 32
|
||||||
|
42 33
|
||||||
|
42 34
|
||||||
|
42 35
|
||||||
|
42 36
|
||||||
|
42 37
|
||||||
|
42 38
|
||||||
|
42 39
|
||||||
|
43 1
|
||||||
|
43 2
|
||||||
|
43 4
|
||||||
|
43 5
|
||||||
|
43 6
|
||||||
|
43 7
|
||||||
|
43 8
|
||||||
|
43 9
|
||||||
|
43 10
|
||||||
|
43 11
|
||||||
|
43 12
|
||||||
|
43 13
|
||||||
|
43 14
|
||||||
|
43 15
|
||||||
|
43 16
|
||||||
|
43 17
|
||||||
|
43 18
|
||||||
|
43 19
|
||||||
|
43 20
|
||||||
|
43 21
|
||||||
|
43 22
|
||||||
|
43 23
|
||||||
|
43 24
|
||||||
|
43 25
|
||||||
|
43 26
|
||||||
|
43 27
|
||||||
|
43 28
|
||||||
|
43 29
|
||||||
|
43 30
|
||||||
|
43 31
|
||||||
|
43 32
|
||||||
|
43 33
|
||||||
|
43 34
|
||||||
|
43 35
|
||||||
|
43 36
|
||||||
|
43 37
|
||||||
|
43 38
|
||||||
|
43 39
|
||||||
|
43 40
|
||||||
|
43 41
|
||||||
|
43 42
|
||||||
|
44 1
|
||||||
|
44 2
|
||||||
|
44 3
|
||||||
|
44 5
|
||||||
|
44 6
|
||||||
|
44 7
|
||||||
|
44 8
|
||||||
|
44 9
|
||||||
|
44 10
|
||||||
|
44 11
|
||||||
|
44 12
|
||||||
|
44 13
|
||||||
|
44 14
|
||||||
|
44 15
|
||||||
|
44 16
|
||||||
|
44 17
|
||||||
|
44 18
|
||||||
|
44 19
|
||||||
|
44 20
|
||||||
|
44 21
|
||||||
|
44 22
|
||||||
|
44 23
|
||||||
|
44 24
|
||||||
|
44 25
|
||||||
|
44 26
|
||||||
|
44 27
|
||||||
|
44 28
|
||||||
|
44 29
|
||||||
|
44 30
|
||||||
|
44 31
|
||||||
|
44 32
|
||||||
|
44 33
|
||||||
|
44 34
|
||||||
|
44 35
|
||||||
|
44 36
|
||||||
|
44 37
|
||||||
|
44 38
|
||||||
|
44 39
|
||||||
|
44 40
|
||||||
|
44 41
|
||||||
|
44 42
|
||||||
|
45 1
|
||||||
|
45 2
|
||||||
|
45 3
|
||||||
|
45 4
|
||||||
|
45 5
|
||||||
|
45 6
|
||||||
|
45 8
|
||||||
|
45 9
|
||||||
|
45 10
|
||||||
|
45 11
|
||||||
|
45 12
|
||||||
|
45 13
|
||||||
|
45 14
|
||||||
|
45 15
|
||||||
|
45 16
|
||||||
|
45 17
|
||||||
|
45 18
|
||||||
|
45 19
|
||||||
|
45 20
|
||||||
|
45 21
|
||||||
|
45 22
|
||||||
|
45 23
|
||||||
|
45 24
|
||||||
|
45 25
|
||||||
|
45 26
|
||||||
|
45 27
|
||||||
|
45 28
|
||||||
|
45 29
|
||||||
|
45 30
|
||||||
|
45 31
|
||||||
|
45 32
|
||||||
|
45 33
|
||||||
|
45 34
|
||||||
|
45 35
|
||||||
|
45 36
|
||||||
|
45 37
|
||||||
|
45 38
|
||||||
|
45 39
|
||||||
|
45 40
|
||||||
|
45 41
|
||||||
|
45 42
|
@ -0,0 +1,171 @@
|
|||||||
|
40
|
||||||
|
7 1
|
||||||
|
8 1
|
||||||
|
11 1
|
||||||
|
12 1
|
||||||
|
13 1
|
||||||
|
22 1
|
||||||
|
23 1
|
||||||
|
34 1
|
||||||
|
35 1
|
||||||
|
37 1
|
||||||
|
39 1
|
||||||
|
7 2
|
||||||
|
8 2
|
||||||
|
9 2
|
||||||
|
11 2
|
||||||
|
12 2
|
||||||
|
13 2
|
||||||
|
22 2
|
||||||
|
23 2
|
||||||
|
35 2
|
||||||
|
36 2
|
||||||
|
39 2
|
||||||
|
14 3
|
||||||
|
15 3
|
||||||
|
16 3
|
||||||
|
17 3
|
||||||
|
18 3
|
||||||
|
36 3
|
||||||
|
39 3
|
||||||
|
17 4
|
||||||
|
36 4
|
||||||
|
37 4
|
||||||
|
39 4
|
||||||
|
6 5
|
||||||
|
34 5
|
||||||
|
35 5
|
||||||
|
39 5
|
||||||
|
7 6
|
||||||
|
35 6
|
||||||
|
39 6
|
||||||
|
8 7
|
||||||
|
9 7
|
||||||
|
11 7
|
||||||
|
12 7
|
||||||
|
13 7
|
||||||
|
35 7
|
||||||
|
39 7
|
||||||
|
9 8
|
||||||
|
10 8
|
||||||
|
20 8
|
||||||
|
21 8
|
||||||
|
22 8
|
||||||
|
23 8
|
||||||
|
24 8
|
||||||
|
35 8
|
||||||
|
38 8
|
||||||
|
39 8
|
||||||
|
10 9
|
||||||
|
35 9
|
||||||
|
36 9
|
||||||
|
39 9
|
||||||
|
35 10
|
||||||
|
36 10
|
||||||
|
39 10
|
||||||
|
19 11
|
||||||
|
35 11
|
||||||
|
36 11
|
||||||
|
39 11
|
||||||
|
19 12
|
||||||
|
26 12
|
||||||
|
35 12
|
||||||
|
36 12
|
||||||
|
38 12
|
||||||
|
39 12
|
||||||
|
35 13
|
||||||
|
36 13
|
||||||
|
38 13
|
||||||
|
39 13
|
||||||
|
25 14
|
||||||
|
26 14
|
||||||
|
27 14
|
||||||
|
28 14
|
||||||
|
29 14
|
||||||
|
36 14
|
||||||
|
39 14
|
||||||
|
19 15
|
||||||
|
25 15
|
||||||
|
26 15
|
||||||
|
27 15
|
||||||
|
28 15
|
||||||
|
29 15
|
||||||
|
36 15
|
||||||
|
39 15
|
||||||
|
19 16
|
||||||
|
27 16
|
||||||
|
36 16
|
||||||
|
39 16
|
||||||
|
36 17
|
||||||
|
39 17
|
||||||
|
19 18
|
||||||
|
25 18
|
||||||
|
26 18
|
||||||
|
27 18
|
||||||
|
29 18
|
||||||
|
32 18
|
||||||
|
36 18
|
||||||
|
39 18
|
||||||
|
33 19
|
||||||
|
36 19
|
||||||
|
38 19
|
||||||
|
39 19
|
||||||
|
36 20
|
||||||
|
38 20
|
||||||
|
39 20
|
||||||
|
33 21
|
||||||
|
36 21
|
||||||
|
38 21
|
||||||
|
39 21
|
||||||
|
27 22
|
||||||
|
28 22
|
||||||
|
30 22
|
||||||
|
31 22
|
||||||
|
32 22
|
||||||
|
33 22
|
||||||
|
35 22
|
||||||
|
36 22
|
||||||
|
38 22
|
||||||
|
39 22
|
||||||
|
30 23
|
||||||
|
32 23
|
||||||
|
33 23
|
||||||
|
35 23
|
||||||
|
36 23
|
||||||
|
38 23
|
||||||
|
39 23
|
||||||
|
36 24
|
||||||
|
38 24
|
||||||
|
39 24
|
||||||
|
36 25
|
||||||
|
38 25
|
||||||
|
39 25
|
||||||
|
36 26
|
||||||
|
38 26
|
||||||
|
39 26
|
||||||
|
30 27
|
||||||
|
36 27
|
||||||
|
38 27
|
||||||
|
39 27
|
||||||
|
36 28
|
||||||
|
38 28
|
||||||
|
39 28
|
||||||
|
36 29
|
||||||
|
38 29
|
||||||
|
39 29
|
||||||
|
36 30
|
||||||
|
38 30
|
||||||
|
39 30
|
||||||
|
32 31
|
||||||
|
36 31
|
||||||
|
38 31
|
||||||
|
39 31
|
||||||
|
36 32
|
||||||
|
38 32
|
||||||
|
39 32
|
||||||
|
36 33
|
||||||
|
38 33
|
||||||
|
39 33
|
||||||
|
37 34
|
||||||
|
36 35
|
||||||
|
37 35
|
@ -0,0 +1,31 @@
|
|||||||
|
20
|
||||||
|
0 1
|
||||||
|
1 2
|
||||||
|
2 3
|
||||||
|
3 4
|
||||||
|
4 5
|
||||||
|
5 6
|
||||||
|
6 7
|
||||||
|
7 8
|
||||||
|
8 9
|
||||||
|
9 0
|
||||||
|
10 13
|
||||||
|
11 14
|
||||||
|
12 15
|
||||||
|
13 16
|
||||||
|
14 17
|
||||||
|
15 18
|
||||||
|
16 19
|
||||||
|
17 10
|
||||||
|
18 11
|
||||||
|
19 12
|
||||||
|
0 10
|
||||||
|
1 11
|
||||||
|
2 12
|
||||||
|
3 13
|
||||||
|
4 14
|
||||||
|
5 15
|
||||||
|
6 16
|
||||||
|
7 17
|
||||||
|
8 18
|
||||||
|
9 19
|
@ -0,0 +1,219 @@
|
|||||||
|
#include <stdio.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <math.h>
|
||||||
|
#include <string.h>
|
||||||
|
#include <time.h>
|
||||||
|
#include <SDL2/SDL.h>
|
||||||
|
#include <signal.h>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
typedef struct {
|
||||||
|
double x;
|
||||||
|
double y;
|
||||||
|
} Node;
|
||||||
|
|
||||||
|
typedef struct {
|
||||||
|
size_t start;
|
||||||
|
size_t end;
|
||||||
|
} Edge;
|
||||||
|
|
||||||
|
|
||||||
|
// Varibili globali
|
||||||
|
int peso;
|
||||||
|
int node_count = 0;
|
||||||
|
int edge_count= 0;
|
||||||
|
volatile sig_atomic_t stop = 0; // Variabile volatile per indicare l'interruzione
|
||||||
|
double scaleFactor; // Fattore di scala iniziale
|
||||||
|
double offsetX; // Offeset iniziale
|
||||||
|
double offsetY;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
void handle_signal(int sig) {
|
||||||
|
if (sig == SIGINT) {
|
||||||
|
stop = 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Prototipi delle funzioni
|
||||||
|
void handle_signal(int sig);
|
||||||
|
void drawGraph(SDL_Renderer* renderer, Node *nodes, Edge *edges, int screenWidth, int screenHeight);
|
||||||
|
void getMaxNodeDimensions(double* maxX, double* maxY, Node *nodes);
|
||||||
|
|
||||||
|
|
||||||
|
// Funzione principale
|
||||||
|
int main(int argc, char* argv[]) {
|
||||||
|
if (argc < 2) {
|
||||||
|
printf("Uso corretto: %s nome_file\n", argv[0]);
|
||||||
|
return 1; // Esce dal programma con codice di errore
|
||||||
|
}
|
||||||
|
char* file_name = argv[1];
|
||||||
|
FILE* input = fopen(file_name, "r");
|
||||||
|
if (!input) {
|
||||||
|
printf("Il file non esiste.\n");
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Lettura del numero di nodi e peso (che non viene utilizzato qui)
|
||||||
|
fscanf(input, "%d %*d", &node_count);
|
||||||
|
|
||||||
|
// Allocazione dinamica degli array di nodi
|
||||||
|
Node *nodes = malloc(node_count * sizeof(Node));
|
||||||
|
|
||||||
|
// Lettura delle coordinate dei nodi
|
||||||
|
for (int i = 0; i < node_count; i++) {
|
||||||
|
fscanf(input, "%*d %lf %lf\n", &nodes[i].x, &nodes[i].y);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Lettura del numero di archi
|
||||||
|
fscanf(input, "%d", &edge_count);
|
||||||
|
|
||||||
|
// Allocazione dinamica degli array di archi
|
||||||
|
Edge *edges = malloc(edge_count * sizeof(Edge));
|
||||||
|
|
||||||
|
// Lettura degli indici degli archi
|
||||||
|
for (int i = 0; i < edge_count; i++) {
|
||||||
|
fscanf(input, "%zu %zu\n", &edges[i].start, &edges[i].end);
|
||||||
|
}
|
||||||
|
|
||||||
|
fclose(input);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// Initialize SDL
|
||||||
|
if (SDL_Init(SDL_INIT_VIDEO) != 0) {
|
||||||
|
fprintf(stderr, "SDL_Init Error: %s\n", SDL_GetError());
|
||||||
|
exit(EXIT_FAILURE);
|
||||||
|
}
|
||||||
|
SDL_DisplayMode display_mode;
|
||||||
|
if (SDL_GetDesktopDisplayMode(0, &display_mode) != 0) {
|
||||||
|
fprintf(stderr, "SDL_GetDesktopDisplayMode Error: %s\n", SDL_GetError());
|
||||||
|
SDL_Quit();
|
||||||
|
exit(EXIT_FAILURE);
|
||||||
|
}
|
||||||
|
int screenWidth = display_mode.w - 10;
|
||||||
|
int screenHeight = display_mode.h - 10;
|
||||||
|
SDL_Window* window = SDL_CreateWindow("Graph Visualization",
|
||||||
|
SDL_WINDOWPOS_UNDEFINED,
|
||||||
|
SDL_WINDOWPOS_UNDEFINED,
|
||||||
|
screenWidth, screenHeight,
|
||||||
|
SDL_WINDOW_FULLSCREEN);
|
||||||
|
if (window == NULL) {
|
||||||
|
printf("Window could not be created! SDL_Error: %s\n", SDL_GetError());
|
||||||
|
SDL_Quit();
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
SDL_Renderer* renderer = SDL_CreateRenderer(window, -1, SDL_RENDERER_ACCELERATED);
|
||||||
|
if (renderer == NULL) {
|
||||||
|
printf("Renderer could not be created! SDL_Error: %s\n", SDL_GetError());
|
||||||
|
SDL_DestroyWindow(window);
|
||||||
|
SDL_Quit();
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
double maX, maY;
|
||||||
|
getMaxNodeDimensions(&maX, &maY, nodes);// Calcola le dimensioni massime dei nodi per adattare le dimensioni della finestra
|
||||||
|
scaleFactor = fmin(screenWidth / (2 * maX), screenHeight / (2 * maY));
|
||||||
|
offsetX = 0.0;
|
||||||
|
offsetY = 0.0;
|
||||||
|
//drawGraph(renderer, &graph, screenWidth, screenHeight); // Disegno il grafico
|
||||||
|
signal(SIGINT, handle_signal); // Gestore di segnale, chiama handle_signal quando riceve SIGINT
|
||||||
|
SDL_Event e; // Variabile per ricevere un evento
|
||||||
|
int quit = 0;
|
||||||
|
int i = 0;
|
||||||
|
while (!quit && !stop) {
|
||||||
|
while (SDL_PollEvent(&e) != 0) { // Controllo se ci sono eventi
|
||||||
|
if (e.type == SDL_QUIT) {
|
||||||
|
quit = 1;
|
||||||
|
} else if (e.type == SDL_MOUSEWHEEL) { // Scorrere con la rotella del mouse
|
||||||
|
// Zoom in/out
|
||||||
|
if (e.wheel.y > 0) { // Scroll up
|
||||||
|
scaleFactor *= 1.1;
|
||||||
|
} else if (e.wheel.y < 0) { // Scroll down
|
||||||
|
scaleFactor /= 1.1;
|
||||||
|
}
|
||||||
|
//drawGraph(renderer, screenWidth, screenHeight); //Aggiorno il grafico
|
||||||
|
}else if (e.type == SDL_FINGERMOTION){ // Scroll da touchpad
|
||||||
|
if (e.tfinger.fingerId == 0 && e.type == SDL_FINGERMOTION) {
|
||||||
|
// Calcola la differenza di posizione tra due dita
|
||||||
|
double scrollDistance = sqrt(pow(e.tfinger.dx, 2) + pow(e.tfinger.dy, 2));
|
||||||
|
// Aggiorna scaleFactor in base a scrollDistance e alla direzione del movimento
|
||||||
|
scaleFactor *= scrollDistance > 0 ? (1.0 + scrollDistance * 0.01) : 1.0; // Aumento o diminuzione dello scale factor in base alla direzione
|
||||||
|
//drawGraph(renderer, screenWidth, screenHeight);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
else if (e.type == SDL_KEYDOWN) {
|
||||||
|
// Gestione del movimento con i tasti freccia
|
||||||
|
switch (e.key.keysym.sym) {
|
||||||
|
case SDLK_LEFT:
|
||||||
|
offsetX += 500.0* (1/scaleFactor); // Spostamento a sinistra di 10 pixel
|
||||||
|
//drawGraph(renderer, screenWidth, screenHeight); //Aggiorno il grafico
|
||||||
|
break;
|
||||||
|
case SDLK_RIGHT:
|
||||||
|
offsetX -= 500.0* (1/scaleFactor); // Spostamento a destra di 10 pixel
|
||||||
|
//drawGraph(renderer, screenWidth, screenHeight); //Aggiorno il grafico
|
||||||
|
break;
|
||||||
|
case SDLK_UP:
|
||||||
|
offsetY += 500.0* (1/scaleFactor); // Spostamento verso l'alto di 10 pixel
|
||||||
|
//drawGraph(renderer, screenWidth, screenHeight); //Aggiorno il grafico
|
||||||
|
break;
|
||||||
|
case SDLK_DOWN:
|
||||||
|
offsetY -= 500.0* (1/scaleFactor); // Spostamento verso il basso di 10 pixel
|
||||||
|
//drawGraph(renderer, screenWidth, screenHeight); //Aggiorno il grafico
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
drawGraph(renderer,nodes,edges,screenWidth, screenHeight);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Cleanup SDL
|
||||||
|
SDL_DestroyRenderer(renderer);
|
||||||
|
SDL_DestroyWindow(window);
|
||||||
|
SDL_Quit();
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
void drawGraph(SDL_Renderer* renderer, Node *nodes, Edge *edges, int screenWidth, int screenHeight) {
|
||||||
|
SDL_SetRenderDrawColor(renderer, 255, 255, 255, 255); // Colore bianco
|
||||||
|
SDL_RenderClear(renderer); // Pulisce lo schermo
|
||||||
|
SDL_SetRenderDrawColor(renderer, 0, 0, 0, 255); // Colore nero per gli archi
|
||||||
|
for (size_t i = 0; i < edge_count; i++) {
|
||||||
|
size_t node1 = edges[i].start;
|
||||||
|
size_t node2 = edges[i].end;
|
||||||
|
SDL_RenderDrawLine(renderer,
|
||||||
|
(int)((nodes[node1].x + offsetX) * scaleFactor + screenWidth / 2),
|
||||||
|
(int)((nodes[node1].y + offsetY) * scaleFactor + screenHeight / 2),
|
||||||
|
(int)((nodes[node2].x + offsetX) * scaleFactor + screenWidth / 2),
|
||||||
|
(int)((nodes[node2].y + offsetY) * scaleFactor + screenHeight / 2)); //Disegna la linea tra due punti
|
||||||
|
}
|
||||||
|
|
||||||
|
SDL_SetRenderDrawColor(renderer, 255, 0, 0, 255); // Colore rosso per i nodi
|
||||||
|
for (size_t i = 0; i < node_count; i++) {
|
||||||
|
int x = (int)((nodes[i].x + offsetX) * scaleFactor + screenWidth / 2);
|
||||||
|
int y = (int)((nodes[i].y + offsetY) * scaleFactor + screenHeight / 2);
|
||||||
|
SDL_Rect rect = {x - (2* scaleFactor), y - (2* scaleFactor), 4* scaleFactor, 4* scaleFactor};
|
||||||
|
SDL_RenderFillRect(renderer, &rect); //Disegno i nodi
|
||||||
|
}
|
||||||
|
SDL_RenderPresent(renderer); // Disegna su schermo
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void getMaxNodeDimensions(double* maxX, double* maxY, Node *nodes) { // Trova le coordinate massime dei nodi, in valore assoluto
|
||||||
|
*maxX = 0.0;
|
||||||
|
*maxY = 0.0;
|
||||||
|
for (size_t i = 0; i < node_count; i++) {
|
||||||
|
if (fabs(nodes[i].x) > *maxX) {
|
||||||
|
*maxX = fabs(nodes[i].x);
|
||||||
|
}
|
||||||
|
if (fabs(nodes[i].y) > *maxY) {
|
||||||
|
*maxY = fabs(nodes[i].y);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,31 @@
|
|||||||
|
20
|
||||||
|
0 1
|
||||||
|
1 2
|
||||||
|
2 3
|
||||||
|
3 4
|
||||||
|
4 5
|
||||||
|
5 6
|
||||||
|
6 7
|
||||||
|
7 8
|
||||||
|
8 9
|
||||||
|
9 0
|
||||||
|
10 11
|
||||||
|
11 12
|
||||||
|
12 13
|
||||||
|
13 14
|
||||||
|
14 10
|
||||||
|
15 16
|
||||||
|
16 17
|
||||||
|
17 18
|
||||||
|
18 19
|
||||||
|
19 15
|
||||||
|
0 10
|
||||||
|
2 11
|
||||||
|
4 12
|
||||||
|
6 13
|
||||||
|
8 14
|
||||||
|
1 15
|
||||||
|
3 16
|
||||||
|
5 17
|
||||||
|
7 18
|
||||||
|
9 19
|
@ -0,0 +1,13 @@
|
|||||||
|
10
|
||||||
|
0 1
|
||||||
|
1 2
|
||||||
|
1 3
|
||||||
|
1 4
|
||||||
|
4 5
|
||||||
|
5 6
|
||||||
|
6 4
|
||||||
|
2 3
|
||||||
|
3 7
|
||||||
|
7 8
|
||||||
|
8 9
|
||||||
|
9 2
|
@ -0,0 +1,19 @@
|
|||||||
|
12
|
||||||
|
0 1
|
||||||
|
1 2
|
||||||
|
2 3
|
||||||
|
3 4
|
||||||
|
4 5
|
||||||
|
5 0
|
||||||
|
6 8
|
||||||
|
7 9
|
||||||
|
8 10
|
||||||
|
9 11
|
||||||
|
10 6
|
||||||
|
11 7
|
||||||
|
0 6
|
||||||
|
1 7
|
||||||
|
2 8
|
||||||
|
3 9
|
||||||
|
4 10
|
||||||
|
5 11
|
@ -0,0 +1,22 @@
|
|||||||
|
14
|
||||||
|
0 1
|
||||||
|
1 2
|
||||||
|
2 3
|
||||||
|
3 4
|
||||||
|
4 5
|
||||||
|
5 6
|
||||||
|
6 7
|
||||||
|
7 8
|
||||||
|
8 9
|
||||||
|
9 10
|
||||||
|
10 11
|
||||||
|
11 12
|
||||||
|
12 13
|
||||||
|
13 0
|
||||||
|
0 5
|
||||||
|
2 7
|
||||||
|
4 9
|
||||||
|
6 11
|
||||||
|
8 13
|
||||||
|
10 1
|
||||||
|
12 3
|
@ -0,0 +1,31 @@
|
|||||||
|
12
|
||||||
|
0 1
|
||||||
|
1 2
|
||||||
|
2 0
|
||||||
|
3 4
|
||||||
|
4 5
|
||||||
|
5 6
|
||||||
|
6 7
|
||||||
|
7 8
|
||||||
|
8 3
|
||||||
|
9 10
|
||||||
|
10 11
|
||||||
|
11 9
|
||||||
|
0 3
|
||||||
|
0 4
|
||||||
|
0 8
|
||||||
|
1 4
|
||||||
|
1 5
|
||||||
|
1 6
|
||||||
|
2 6
|
||||||
|
2 7
|
||||||
|
2 8
|
||||||
|
9 3
|
||||||
|
9 4
|
||||||
|
9 5
|
||||||
|
10 5
|
||||||
|
10 6
|
||||||
|
10 7
|
||||||
|
11 7
|
||||||
|
11 8
|
||||||
|
11 3
|
@ -0,0 +1,357 @@
|
|||||||
|
#include <stdio.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <math.h>
|
||||||
|
#include <string.h>
|
||||||
|
#include <time.h>
|
||||||
|
#include <mpi.h>
|
||||||
|
|
||||||
|
// Definizione di alcune costanti globali
|
||||||
|
#define PI 3.14159265358979323
|
||||||
|
#define TEMPERATURE_DECAY_RATE 0.98
|
||||||
|
#define MIN_DISTANCE 10.0 // Distanza minima tra i nodi
|
||||||
|
|
||||||
|
// Strutture
|
||||||
|
typedef struct {
|
||||||
|
double x;
|
||||||
|
double y;
|
||||||
|
} Force;
|
||||||
|
|
||||||
|
typedef struct {
|
||||||
|
double x;
|
||||||
|
double y;
|
||||||
|
} Node;
|
||||||
|
|
||||||
|
typedef struct {
|
||||||
|
size_t start;
|
||||||
|
size_t end;
|
||||||
|
} Edge;
|
||||||
|
|
||||||
|
typedef struct {
|
||||||
|
Node* nodes;
|
||||||
|
Edge* edges;
|
||||||
|
size_t node_count;
|
||||||
|
size_t edge_count;
|
||||||
|
} SimpleGraph;
|
||||||
|
|
||||||
|
|
||||||
|
// Prototipi delle funzioni
|
||||||
|
SimpleGraph readGraphFile(char* file_name);
|
||||||
|
void calculateRepulsion(Force* net_forces, SimpleGraph* graph, size_t start, size_t end);
|
||||||
|
void calculateAttraction(Force* net_forces, SimpleGraph* graph, size_t start, size_t end);
|
||||||
|
Force* initializeForceVector(SimpleGraph graph);
|
||||||
|
void moveNodes(Force* net_forces, SimpleGraph* graph, size_t start, size_t end);
|
||||||
|
void getMaxNodeDimensions(SimpleGraph* graph, double* maxX, double* maxY);
|
||||||
|
|
||||||
|
|
||||||
|
int peso;
|
||||||
|
double temperature;
|
||||||
|
double k; // Distanza ideale
|
||||||
|
double scaleFactor; // Fattore di scala iniziale
|
||||||
|
double offsetX; // Offset iniziale
|
||||||
|
double offsetY;
|
||||||
|
|
||||||
|
|
||||||
|
int main(int argc, char* argv[]) {
|
||||||
|
MPI_Init(&argc, &argv);
|
||||||
|
|
||||||
|
int rank, size;
|
||||||
|
MPI_Comm_rank(MPI_COMM_WORLD, &rank);
|
||||||
|
MPI_Comm_size(MPI_COMM_WORLD, &size);
|
||||||
|
|
||||||
|
if (argc < 5) {
|
||||||
|
if (rank == 0) {
|
||||||
|
printf("Uso corretto: %s nome_file iterazioni temperatura peso\n", argv[0]);
|
||||||
|
}
|
||||||
|
MPI_Finalize();
|
||||||
|
return 1; // Esce dal programma con codice di errore
|
||||||
|
}
|
||||||
|
|
||||||
|
char* file_name = argv[1];
|
||||||
|
int it = atoi(argv[2]);
|
||||||
|
temperature = atof(argv[3]);
|
||||||
|
peso = atoi(argv[4]);
|
||||||
|
|
||||||
|
SimpleGraph graph;
|
||||||
|
if (rank == 0) {
|
||||||
|
graph = readGraphFile(file_name);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Broadcast del numero di nodi e archi a tutti i processi
|
||||||
|
MPI_Bcast(&graph.node_count, 1, MPI_UNSIGNED_LONG, 0, MPI_COMM_WORLD);
|
||||||
|
MPI_Bcast(&graph.edge_count, 1, MPI_UNSIGNED_LONG, 0, MPI_COMM_WORLD);
|
||||||
|
|
||||||
|
if (rank != 0) {
|
||||||
|
graph.nodes = malloc(graph.node_count * sizeof(Node));
|
||||||
|
graph.edges = malloc(graph.edge_count * sizeof(Edge));
|
||||||
|
}
|
||||||
|
MPI_Bcast(graph.nodes, graph.node_count * sizeof(Node), MPI_BYTE, 0, MPI_COMM_WORLD);
|
||||||
|
MPI_Bcast(graph.edges, graph.edge_count * sizeof(Edge), MPI_BYTE, 0, MPI_COMM_WORLD);
|
||||||
|
double screenWidth = 2240 - 10;
|
||||||
|
double screenHeight = 1400 - 10;
|
||||||
|
k = sqrt((screenWidth * screenHeight) / graph.node_count);
|
||||||
|
|
||||||
|
|
||||||
|
double offsetX = 0.0;
|
||||||
|
double offsetY = 0.0;
|
||||||
|
Force* net_forces = initializeForceVector(graph);
|
||||||
|
double maxX, maxY;
|
||||||
|
getMaxNodeDimensions(&graph, &maxX, &maxY);
|
||||||
|
double scaleFactor = fmin(screenWidth / (2 * maxX), screenHeight / (2 * maxY));
|
||||||
|
if (!net_forces) {
|
||||||
|
fprintf(stderr, "Error allocating memory for forces\n");
|
||||||
|
MPI_Abort(MPI_COMM_WORLD, 1);
|
||||||
|
}
|
||||||
|
for (int i = 0; i < it; i++) {
|
||||||
|
calculateRepulsion(net_forces, &graph, rank * graph.node_count / size, (rank + 1) * graph.node_count / size);
|
||||||
|
calculateAttraction(net_forces, &graph, rank * graph.edge_count / size, (rank + 1) * graph.edge_count / size);
|
||||||
|
MPI_Barrier(MPI_COMM_WORLD);
|
||||||
|
if (rank == 0) {
|
||||||
|
Force* dati = initializeForceVector(graph);
|
||||||
|
// Buffer per ricevere tutte le forze dai processi
|
||||||
|
Force* all_forces = malloc(size * graph.node_count * sizeof(Force));
|
||||||
|
|
||||||
|
// Array per i counts e i displacements
|
||||||
|
int* counts = malloc(size * sizeof(int)); //Numero di elementi ricevuti da ogni processo
|
||||||
|
int* displacements = malloc(size * sizeof(int)); //Index di partenza
|
||||||
|
|
||||||
|
for (int i = 0; i < size; i++) {
|
||||||
|
counts[i] = graph.node_count * sizeof(Force);
|
||||||
|
displacements[i] = i * graph.node_count * sizeof(Force);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Raccoglie le forze da tutti i processi
|
||||||
|
MPI_Gatherv(net_forces, graph.node_count * sizeof(Force), MPI_BYTE,
|
||||||
|
all_forces, counts, displacements, MPI_BYTE,
|
||||||
|
0, MPI_COMM_WORLD);
|
||||||
|
|
||||||
|
// Somma le forze ricevute
|
||||||
|
for (int i = 0; i < size; i++) {
|
||||||
|
for (int j = 0; j < graph.node_count; j++) {
|
||||||
|
net_forces[j].x += all_forces[i * graph.node_count + j].x;
|
||||||
|
net_forces[j].y += all_forces[i * graph.node_count + j].y;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
moveNodes(net_forces, &graph, 0, graph.node_count);
|
||||||
|
|
||||||
|
// Libera la memoria allocata
|
||||||
|
free(all_forces);
|
||||||
|
free(counts);
|
||||||
|
free(displacements);
|
||||||
|
} else {
|
||||||
|
// Invio delle forze al processo radice
|
||||||
|
MPI_Gatherv(net_forces, graph.node_count * sizeof(Force), MPI_BYTE,
|
||||||
|
NULL, NULL, NULL, MPI_BYTE,
|
||||||
|
0, MPI_COMM_WORLD);
|
||||||
|
}
|
||||||
|
MPI_Barrier(MPI_COMM_WORLD);
|
||||||
|
if (temperature > 1.0) {
|
||||||
|
temperature *= TEMPERATURE_DECAY_RATE;
|
||||||
|
}
|
||||||
|
|
||||||
|
MPI_Bcast(graph.nodes, graph.node_count * sizeof(Node), MPI_BYTE, 0, MPI_COMM_WORLD);
|
||||||
|
for (int i = 0; i< graph.node_count; i++){
|
||||||
|
net_forces[i].x = 0.0;
|
||||||
|
net_forces[i].y = 0.0;
|
||||||
|
}
|
||||||
|
MPI_Barrier(MPI_COMM_WORLD);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
if (rank == 0) {
|
||||||
|
FILE* output = fopen("out.txt", "w");
|
||||||
|
if (!output) {
|
||||||
|
printf("Impossibile aprire il file di output per la scrittura.\n");
|
||||||
|
MPI_Finalize();
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
fprintf(output, "%zu %d\n", graph.node_count, peso);
|
||||||
|
|
||||||
|
// Scrivi le posizioni dei nodi
|
||||||
|
for (size_t i = 0; i < graph.node_count; i++) {
|
||||||
|
fprintf(output, "%zu %f %f\n", i, graph.nodes[i].x, graph.nodes[i].y);
|
||||||
|
}
|
||||||
|
|
||||||
|
fprintf(output, "%zu\n", graph.edge_count);
|
||||||
|
|
||||||
|
// Scrivi gli archi
|
||||||
|
for (size_t i = 0; i < graph.edge_count; i++) {
|
||||||
|
fprintf(output, "%zu %zu\n", graph.edges[i].start, graph.edges[i].end);
|
||||||
|
}
|
||||||
|
|
||||||
|
fclose(output);
|
||||||
|
}
|
||||||
|
|
||||||
|
free(graph.nodes);
|
||||||
|
free(graph.edges);
|
||||||
|
MPI_Finalize();
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
SimpleGraph readGraphFile(char* file_name) {
|
||||||
|
FILE* input = fopen(file_name, "r");
|
||||||
|
if (!input) {
|
||||||
|
fprintf(stderr, "Error opening file\n");
|
||||||
|
MPI_Abort(MPI_COMM_WORLD, 1);
|
||||||
|
}
|
||||||
|
SimpleGraph graph;
|
||||||
|
fscanf(input, "%zu", &graph.node_count); // Legge il numero totale di nodi
|
||||||
|
|
||||||
|
// Creazione di un array temporaneo per memorizzare i dati degli archi
|
||||||
|
size_t temp_capacity = 100; // Capacità iniziale, aumenta dinamicamente se necessario
|
||||||
|
size_t temp_edge_count = 0;
|
||||||
|
Edge* temp_edges = malloc(temp_capacity * sizeof(Edge));
|
||||||
|
|
||||||
|
if (!temp_edges) {
|
||||||
|
fprintf(stderr, "Error allocating memory for edges\n");
|
||||||
|
MPI_Abort(MPI_COMM_WORLD, 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
size_t node1, node2;
|
||||||
|
double pesett;
|
||||||
|
|
||||||
|
if (!peso) { // Se non è presente il peso, legge due alla volta
|
||||||
|
while (fscanf(input, "%zu %zu", &node1, &node2) == 2) {
|
||||||
|
if (temp_edge_count >= temp_capacity) {
|
||||||
|
// Aumenta la capacità dell'array temporaneo
|
||||||
|
temp_capacity *= 2;
|
||||||
|
temp_edges = realloc(temp_edges, temp_capacity * sizeof(Edge));
|
||||||
|
if (!temp_edges) {
|
||||||
|
fprintf(stderr, "Error reallocating memory for edges\n");
|
||||||
|
MPI_Abort(MPI_COMM_WORLD, 1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
temp_edges[temp_edge_count].start = node1;
|
||||||
|
temp_edges[temp_edge_count].end = node2;
|
||||||
|
temp_edge_count++;
|
||||||
|
}
|
||||||
|
} else { // Se è presente il peso, legge tre alla volta
|
||||||
|
while (fscanf(input, "%zu %zu %lf", &node1, &node2, &pesett) == 3) {
|
||||||
|
if (temp_edge_count >= temp_capacity) {
|
||||||
|
// Aumenta la capacità dell'array temporaneo
|
||||||
|
temp_capacity *= 2;
|
||||||
|
temp_edges = realloc(temp_edges, temp_capacity * sizeof(Edge));
|
||||||
|
if (!temp_edges) {
|
||||||
|
fprintf(stderr, "Error reallocating memory for edges\n");
|
||||||
|
MPI_Abort(MPI_COMM_WORLD, 1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
temp_edges[temp_edge_count].start = node1;
|
||||||
|
temp_edges[temp_edge_count].end = node2;
|
||||||
|
temp_edge_count++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fclose(input);
|
||||||
|
|
||||||
|
graph.nodes = malloc(graph.node_count * sizeof(Node));
|
||||||
|
if (!graph.nodes) {
|
||||||
|
fprintf(stderr, "Error allocating memory for nodes\n");
|
||||||
|
MPI_Abort(MPI_COMM_WORLD, 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
graph.edges = malloc(temp_edge_count * sizeof(Edge));
|
||||||
|
if (!graph.edges) {
|
||||||
|
fprintf(stderr, "Error allocating memory for edges\n");
|
||||||
|
MPI_Abort(MPI_COMM_WORLD, 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Inizializza le posizioni dei nodi
|
||||||
|
for (size_t i = 0; i < graph.node_count; i++) {
|
||||||
|
graph.nodes[i].x = cos((2*PI*i)/graph.node_count);
|
||||||
|
graph.nodes[i].y = sin((2*PI*i)/graph.node_count);
|
||||||
|
}
|
||||||
|
|
||||||
|
memcpy(graph.edges, temp_edges, temp_edge_count * sizeof(Edge));
|
||||||
|
graph.edge_count = temp_edge_count;
|
||||||
|
|
||||||
|
free(temp_edges);
|
||||||
|
return graph;
|
||||||
|
}
|
||||||
|
|
||||||
|
void calculateRepulsion(Force* net_forces, SimpleGraph* graph, size_t start, size_t end) {
|
||||||
|
for (size_t i = start; i < end; i++) {
|
||||||
|
for (size_t j = 0; j < graph->node_count; j++) {
|
||||||
|
if (i != j) {
|
||||||
|
double dx = graph->nodes[i].x - graph->nodes[j].x;
|
||||||
|
double dy = graph->nodes[i].y - graph->nodes[j].y;
|
||||||
|
double distance = sqrt(dx * dx + dy * dy);
|
||||||
|
|
||||||
|
if (distance < MIN_DISTANCE) {
|
||||||
|
distance = MIN_DISTANCE;
|
||||||
|
}
|
||||||
|
|
||||||
|
double force_magnitude = k * k / distance;
|
||||||
|
double force_x = force_magnitude * (dx / distance);
|
||||||
|
double force_y = force_magnitude * (dy / distance);
|
||||||
|
|
||||||
|
net_forces[i].x += force_x;
|
||||||
|
net_forces[i].y += force_y;
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void calculateAttraction(Force* net_forces, SimpleGraph* graph, size_t start, size_t end) {
|
||||||
|
for (size_t i = start; i < end; i++) {
|
||||||
|
size_t node1 = graph->edges[i].start;
|
||||||
|
size_t node2 = graph->edges[i].end;
|
||||||
|
double dx = graph->nodes[node2].x - graph->nodes[node1].x;
|
||||||
|
double dy = graph->nodes[node2].y - graph->nodes[node1].y;
|
||||||
|
double distance = sqrt(dx * dx + dy * dy);
|
||||||
|
double force = distance * distance / k;
|
||||||
|
if (distance < MIN_DISTANCE) {
|
||||||
|
distance = MIN_DISTANCE;
|
||||||
|
}
|
||||||
|
net_forces[node1].x += force * dx / distance;
|
||||||
|
net_forces[node1].y += force * dy / distance;
|
||||||
|
net_forces[node2].x -= force * dx / distance;
|
||||||
|
net_forces[node2].y -= force * dy / distance;
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Force* initializeForceVector(SimpleGraph graph) {
|
||||||
|
Force* net_forces = malloc(graph.node_count * sizeof(Force));
|
||||||
|
if (!net_forces) {
|
||||||
|
fprintf(stderr, "Error allocating memory for forces\n");
|
||||||
|
MPI_Abort(MPI_COMM_WORLD, 1);
|
||||||
|
}
|
||||||
|
for (size_t i = 0; i < graph.node_count; i++) {
|
||||||
|
net_forces[i].x = 0;
|
||||||
|
net_forces[i].y = 0;
|
||||||
|
}
|
||||||
|
return net_forces;
|
||||||
|
}
|
||||||
|
|
||||||
|
void moveNodes(Force* net_forces, SimpleGraph* graph, size_t start, size_t end) {
|
||||||
|
for (size_t i = start; i < end; i++) {
|
||||||
|
double dx = net_forces[i].x;
|
||||||
|
double dy = net_forces[i].y;
|
||||||
|
|
||||||
|
|
||||||
|
double displacement = sqrt(dx * dx + dy * dy);
|
||||||
|
if (displacement > temperature) {
|
||||||
|
dx = dx / displacement * temperature;
|
||||||
|
dy = dy / displacement * temperature;
|
||||||
|
}
|
||||||
|
|
||||||
|
graph->nodes[i].x += dx;
|
||||||
|
graph->nodes[i].y += dy;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void getMaxNodeDimensions(SimpleGraph* graph, double* maxX, double* maxY) {
|
||||||
|
*maxX = 0.0;
|
||||||
|
*maxY = 0.0;
|
||||||
|
|
||||||
|
for (size_t i = 0; i < graph->node_count; i++) {
|
||||||
|
if (fabs(graph->nodes[i].x) > *maxX) {
|
||||||
|
*maxX = fabs(graph->nodes[i].x);
|
||||||
|
}
|
||||||
|
if (fabs(graph->nodes[i].y) > *maxY) {
|
||||||
|
*maxY = fabs(graph->nodes[i].y);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,46 @@
|
|||||||
|
16
|
||||||
|
1 2 2012
|
||||||
|
1 3 2012
|
||||||
|
4 5 2012
|
||||||
|
4 6 2012
|
||||||
|
4 7 2012
|
||||||
|
4 8 2012
|
||||||
|
4 9 2012
|
||||||
|
10 6 2012
|
||||||
|
10 9 2012
|
||||||
|
10 7 2012
|
||||||
|
10 11 2012
|
||||||
|
2 12 2012
|
||||||
|
2 3 2012
|
||||||
|
13 14 2012
|
||||||
|
13 6 2012
|
||||||
|
7 6 2012
|
||||||
|
7 9 2012
|
||||||
|
7 11 2012
|
||||||
|
11 6 2012
|
||||||
|
11 9 2012
|
||||||
|
6 5 2012
|
||||||
|
6 14 2012
|
||||||
|
6 8 2012
|
||||||
|
6 9 2012
|
||||||
|
5 9 2012
|
||||||
|
4 10 2013
|
||||||
|
4 9 2013
|
||||||
|
4 8 2013
|
||||||
|
4 11 2013
|
||||||
|
4 6 2013
|
||||||
|
4 7 2013
|
||||||
|
15 5 2013
|
||||||
|
10 6 2013
|
||||||
|
10 9 2013
|
||||||
|
10 7 2013
|
||||||
|
10 11 2013
|
||||||
|
2 3 2013
|
||||||
|
13 14 2013
|
||||||
|
13 6 2013
|
||||||
|
7 6 2013
|
||||||
|
7 9 2013
|
||||||
|
7 11 2013
|
||||||
|
11 6 2013
|
||||||
|
11 9 2013
|
||||||
|
6 9 2013
|
@ -0,0 +1,33 @@
|
|||||||
|
16
|
||||||
|
0 1
|
||||||
|
1 2
|
||||||
|
2 3
|
||||||
|
3 0
|
||||||
|
4 5
|
||||||
|
5 6
|
||||||
|
6 7
|
||||||
|
7 4
|
||||||
|
0 4
|
||||||
|
1 5
|
||||||
|
2 6
|
||||||
|
3 7
|
||||||
|
8 9
|
||||||
|
9 10
|
||||||
|
10 11
|
||||||
|
11 8
|
||||||
|
12 13
|
||||||
|
13 14
|
||||||
|
14 15
|
||||||
|
15 12
|
||||||
|
8 12
|
||||||
|
9 13
|
||||||
|
10 14
|
||||||
|
11 15
|
||||||
|
0 8
|
||||||
|
1 9
|
||||||
|
2 10
|
||||||
|
3 11
|
||||||
|
4 12
|
||||||
|
5 13
|
||||||
|
6 14
|
||||||
|
7 15
|
@ -0,0 +1,19 @@
|
|||||||
|
12
|
||||||
|
0 1
|
||||||
|
1 2
|
||||||
|
2 3
|
||||||
|
3 4
|
||||||
|
4 5
|
||||||
|
5 6
|
||||||
|
6 7
|
||||||
|
7 8
|
||||||
|
8 0
|
||||||
|
9 10
|
||||||
|
10 11
|
||||||
|
11 9
|
||||||
|
0 9
|
||||||
|
3 10
|
||||||
|
6 11
|
||||||
|
1 5
|
||||||
|
4 8
|
||||||
|
7 2
|
Loading…
Reference in New Issue