blob: 1834d36e5e0b8dfde080434f6090781002e749a2 (
plain)
1
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
|
import networkx as nx
import sys
from collections import Counter
def build_graph(filename):
g = nx.Graph()
with open(filename) as fh:
fh.readline()
for line in fh:
i, j = map(lambda x: int(float(x)), line.strip().split(",")[1:])
g.add_edge(i, j)
return g
def distances(g):
victims = set()
with open("vics.csv") as fh:
fh.readline()
for line in fh:
victims.add(int(line.strip().split(",")[1]))
level = 0
seen = {}
nextlevel = {v: 1 for v in victims}
while level <= 3:
thislevel = nextlevel
nextlevel = {}
for v in thislevel:
if v not in seen:
seen[v] = level
nextlevel.update(g[v])
level += 1
return seen
if __name__ == "__main__":
g = build_graph(sys.argv[1])
print g.number_of_nodes(), g.number_of_edges()
cnt = Counter()
for v, d in distances(g).iteritems():
cnt[d] += 1
print cnt.most_common()
|