graph = {}
results = {}
firstline = true
matrix = {}
--read the input file and create the necessary structure
for line in io.lines() do
if firstline then
_, _, total = string.find(line, "(%d+)")
total = tonumber(total)
for i = 1, total do
matrix[i] = {}
for k = 1, total do
matrix[i][k] = 0
end
end
firstline = false
else
local _, _, x, y = string.find(line, "(%d+)%s(%d+)")
x = tonumber(x)
y = tonumber(y)
table.insert(graph, {x, y})
matrix[x][y] = 1
matrix[y][x] = 1
end
end
--fill the results table
for i = 1, total do
results[i] = 0
end
--count items
for _, v in ipairs(graph) do
results[v[1]] = results[v[1]] + 1
results[v[2]] = results[v[2]] + 1
end
--print results
for i, v in ipairs(results) do
print("Node " .. i .. " has a degree of " .. v)
end
--print adjacency matrix
for i, v in ipairs(matrix) do
local row = ""
for _, k in ipairs(matrix[i]) do
row = row .. k .. " "
end
print(row)
end
Z3JhcGggPSB7fQpyZXN1bHRzICA9IHt9CmZpcnN0bGluZSA9IHRydWUKbWF0cml4ID0ge30KCi0tcmVhZCB0aGUgaW5wdXQgZmlsZSBhbmQgY3JlYXRlIHRoZSBuZWNlc3Nhcnkgc3RydWN0dXJlCmZvciBsaW5lIGluIGlvLmxpbmVzKCkgZG8KCWlmIGZpcnN0bGluZSB0aGVuCgkJXywgXywgdG90YWwgPSBzdHJpbmcuZmluZChsaW5lLCAiKCVkKykiKQoJCXRvdGFsID0gdG9udW1iZXIodG90YWwpCgkJZm9yIGkgPSAxLCB0b3RhbCBkbwoJCQltYXRyaXhbaV0gPSB7fQoJCQlmb3IgayA9IDEsIHRvdGFsIGRvCgkJCQltYXRyaXhbaV1ba10gPSAwCgkJCWVuZAoJCWVuZAoJCWZpcnN0bGluZSA9IGZhbHNlCgllbHNlCgkJbG9jYWwgXywgXywgeCwgeSA9IHN0cmluZy5maW5kKGxpbmUsICIoJWQrKSVzKCVkKykiKQoJCXggPSB0b251bWJlcih4KQoJCXkgPSB0b251bWJlcih5KQoJCXRhYmxlLmluc2VydChncmFwaCwge3gsIHl9KQoJCW1hdHJpeFt4XVt5XSA9IDEKCQltYXRyaXhbeV1beF0gPSAxCgllbmQKZW5kCgotLWZpbGwgdGhlIHJlc3VsdHMgdGFibGUKZm9yIGkgPSAxLCB0b3RhbCBkbwoJcmVzdWx0c1tpXSA9IDAKZW5kCgotLWNvdW50IGl0ZW1zCmZvciBfLCB2IGluIGlwYWlycyhncmFwaCkgZG8KCXJlc3VsdHNbdlsxXV0gPSByZXN1bHRzW3ZbMV1dICsgMQoJcmVzdWx0c1t2WzJdXSA9IHJlc3VsdHNbdlsyXV0gKyAxCmVuZAoKLS1wcmludCByZXN1bHRzCmZvciBpLCB2IGluIGlwYWlycyhyZXN1bHRzKSBkbwoJcHJpbnQoIk5vZGUgIiAuLiBpIC4uICIgaGFzIGEgZGVncmVlIG9mICIgLi4gdikKZW5kCgotLXByaW50IGFkamFjZW5jeSBtYXRyaXgKCmZvciBpLCB2IGluIGlwYWlycyhtYXRyaXgpIGRvCglsb2NhbCByb3cgPSAiIgoJZm9yIF8sIGsgaW4gaXBhaXJzKG1hdHJpeFtpXSkgZG8KCQlyb3cgPSByb3cgLi4gayAuLiAiICIKCWVuZAoJcHJpbnQocm93KQplbmQK
MTYKMSAyCjEgMwoyIDMKMSA0CjMgNAoxIDUKMiA1CjEgNgoyIDYKMyA2CjMgNwo1IDcKNiA3CjMgOAo0IDgKNiA4CjcgOAoyIDkKNSA5CjYgOQoyIDEwCjkgMTAKNiAxMQo3IDExCjggMTEKOSAxMQoxMCAxMQoxIDEyCjYgMTIKNyAxMgo4IDEyCjExIDEyCjYgMTMKNyAxMwo5IDEzCjEwIDEzCjExIDEzCjUgMTQKOCAxNAoxMiAxNAoxMyAxNAoxIDE1CjIgMTUKNSAxNQo5IDE1CjEwIDE1CjExIDE1CjEyIDE1CjEzIDE1CjEgMTYKMiAxNgo1IDE2CjYgMTYKMTEgMTYKMTIgMTYKMTMgMTYKMTQgMTYKMTUgMTY=
16
1 2
1 3
2 3
1 4
3 4
1 5
2 5
1 6
2 6
3 6
3 7
5 7
6 7
3 8
4 8
6 8
7 8
2 9
5 9
6 9
2 10
9 10
6 11
7 11
8 11
9 11
10 11
1 12
6 12
7 12
8 12
11 12
6 13
7 13
9 13
10 13
11 13
5 14
8 14
12 14
13 14
1 15
2 15
5 15
9 15
10 15
11 15
12 15
13 15
1 16
2 16
5 16
6 16
11 16
12 16
13 16
14 16
15 16