Coverage for /pythoncovmergedfiles/medio/medio/usr/local/lib/python3.9/dist-packages/networkx/generators/social.py: 3%

311 statements  

« prev     ^ index     » next       coverage.py v7.3.2, created at 2023-10-20 07:00 +0000

1""" 

2Famous social networks. 

3""" 

4import networkx as nx 

5 

6__all__ = [ 

7 "karate_club_graph", 

8 "davis_southern_women_graph", 

9 "florentine_families_graph", 

10 "les_miserables_graph", 

11] 

12 

13 

14@nx._dispatch(graphs=None) 

15def karate_club_graph(): 

16 """Returns Zachary's Karate Club graph. 

17 

18 Each node in the returned graph has a node attribute 'club' that 

19 indicates the name of the club to which the member represented by that node 

20 belongs, either 'Mr. Hi' or 'Officer'. Each edge has a weight based on the 

21 number of contexts in which that edge's incident node members interacted. 

22 

23 Examples 

24 -------- 

25 To get the name of the club to which a node belongs:: 

26 

27 >>> G = nx.karate_club_graph() 

28 >>> G.nodes[5]["club"] 

29 'Mr. Hi' 

30 >>> G.nodes[9]["club"] 

31 'Officer' 

32 

33 References 

34 ---------- 

35 .. [1] Zachary, Wayne W. 

36 "An Information Flow Model for Conflict and Fission in Small Groups." 

37 *Journal of Anthropological Research*, 33, 452--473, (1977). 

38 """ 

39 # Create the set of all members, and the members of each club. 

40 all_members = set(range(34)) 

41 club1 = {0, 1, 2, 3, 4, 5, 6, 7, 8, 10, 11, 12, 13, 16, 17, 19, 21} 

42 # club2 = all_members - club1 

43 

44 G = nx.Graph() 

45 G.add_nodes_from(all_members) 

46 G.name = "Zachary's Karate Club" 

47 

48 zacharydat = """\ 

490 4 5 3 3 3 3 2 2 0 2 3 2 3 0 0 0 2 0 2 0 2 0 0 0 0 0 0 0 0 0 2 0 0 

504 0 6 3 0 0 0 4 0 0 0 0 0 5 0 0 0 1 0 2 0 2 0 0 0 0 0 0 0 0 2 0 0 0 

515 6 0 3 0 0 0 4 5 1 0 0 0 3 0 0 0 0 0 0 0 0 0 0 0 0 0 2 2 0 0 0 3 0 

523 3 3 0 0 0 0 3 0 0 0 0 3 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 

533 0 0 0 0 0 2 0 0 0 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 

543 0 0 0 0 0 5 0 0 0 3 0 0 0 0 0 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 

553 0 0 0 2 5 0 0 0 0 0 0 0 0 0 0 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 

562 4 4 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 

572 0 5 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3 0 4 3 

580 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 

592 0 0 0 3 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 

603 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 

611 0 0 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 

623 5 3 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3 

630 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3 2 

640 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3 4 

650 0 0 0 0 3 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 

662 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 

670 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 2 

682 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 

690 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3 1 

702 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 

710 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 

720 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5 0 4 0 2 0 0 5 4 

730 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 3 0 0 0 2 0 0 

740 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5 2 0 0 0 0 0 0 7 0 0 

750 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4 0 0 0 2 

760 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4 3 0 0 0 0 0 0 0 0 4 

770 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 2 

780 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3 0 0 4 0 0 0 0 0 3 2 

790 2 0 0 0 0 0 0 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3 3 

802 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 7 0 0 2 0 0 0 4 4 

810 0 2 0 0 0 0 0 3 0 0 0 0 0 3 3 0 0 1 0 3 0 2 5 0 0 0 0 0 4 3 4 0 5 

820 0 0 0 0 0 0 0 4 2 0 0 0 3 2 4 0 0 2 1 1 0 3 4 0 0 2 4 2 2 3 4 5 0""" 

83 

84 for row, line in enumerate(zacharydat.split("\n")): 

85 thisrow = [int(b) for b in line.split()] 

86 for col, entry in enumerate(thisrow): 

87 if entry >= 1: 

88 G.add_edge(row, col, weight=entry) 

89 

90 # Add the name of each member's club as a node attribute. 

91 for v in G: 

92 G.nodes[v]["club"] = "Mr. Hi" if v in club1 else "Officer" 

93 return G 

94 

95 

96@nx._dispatch(graphs=None) 

97def davis_southern_women_graph(): 

98 """Returns Davis Southern women social network. 

99 

100 This is a bipartite graph. 

101 

102 References 

103 ---------- 

104 .. [1] A. Davis, Gardner, B. B., Gardner, M. R., 1941. Deep South. 

105 University of Chicago Press, Chicago, IL. 

106 """ 

107 G = nx.Graph() 

108 # Top nodes 

109 women = [ 

110 "Evelyn Jefferson", 

111 "Laura Mandeville", 

112 "Theresa Anderson", 

113 "Brenda Rogers", 

114 "Charlotte McDowd", 

115 "Frances Anderson", 

116 "Eleanor Nye", 

117 "Pearl Oglethorpe", 

118 "Ruth DeSand", 

119 "Verne Sanderson", 

120 "Myra Liddel", 

121 "Katherina Rogers", 

122 "Sylvia Avondale", 

123 "Nora Fayette", 

124 "Helen Lloyd", 

125 "Dorothy Murchison", 

126 "Olivia Carleton", 

127 "Flora Price", 

128 ] 

129 G.add_nodes_from(women, bipartite=0) 

130 # Bottom nodes 

131 events = [ 

132 "E1", 

133 "E2", 

134 "E3", 

135 "E4", 

136 "E5", 

137 "E6", 

138 "E7", 

139 "E8", 

140 "E9", 

141 "E10", 

142 "E11", 

143 "E12", 

144 "E13", 

145 "E14", 

146 ] 

147 G.add_nodes_from(events, bipartite=1) 

148 

149 G.add_edges_from( 

150 [ 

151 ("Evelyn Jefferson", "E1"), 

152 ("Evelyn Jefferson", "E2"), 

153 ("Evelyn Jefferson", "E3"), 

154 ("Evelyn Jefferson", "E4"), 

155 ("Evelyn Jefferson", "E5"), 

156 ("Evelyn Jefferson", "E6"), 

157 ("Evelyn Jefferson", "E8"), 

158 ("Evelyn Jefferson", "E9"), 

159 ("Laura Mandeville", "E1"), 

160 ("Laura Mandeville", "E2"), 

161 ("Laura Mandeville", "E3"), 

162 ("Laura Mandeville", "E5"), 

163 ("Laura Mandeville", "E6"), 

164 ("Laura Mandeville", "E7"), 

165 ("Laura Mandeville", "E8"), 

166 ("Theresa Anderson", "E2"), 

167 ("Theresa Anderson", "E3"), 

168 ("Theresa Anderson", "E4"), 

169 ("Theresa Anderson", "E5"), 

170 ("Theresa Anderson", "E6"), 

171 ("Theresa Anderson", "E7"), 

172 ("Theresa Anderson", "E8"), 

173 ("Theresa Anderson", "E9"), 

174 ("Brenda Rogers", "E1"), 

175 ("Brenda Rogers", "E3"), 

176 ("Brenda Rogers", "E4"), 

177 ("Brenda Rogers", "E5"), 

178 ("Brenda Rogers", "E6"), 

179 ("Brenda Rogers", "E7"), 

180 ("Brenda Rogers", "E8"), 

181 ("Charlotte McDowd", "E3"), 

182 ("Charlotte McDowd", "E4"), 

183 ("Charlotte McDowd", "E5"), 

184 ("Charlotte McDowd", "E7"), 

185 ("Frances Anderson", "E3"), 

186 ("Frances Anderson", "E5"), 

187 ("Frances Anderson", "E6"), 

188 ("Frances Anderson", "E8"), 

189 ("Eleanor Nye", "E5"), 

190 ("Eleanor Nye", "E6"), 

191 ("Eleanor Nye", "E7"), 

192 ("Eleanor Nye", "E8"), 

193 ("Pearl Oglethorpe", "E6"), 

194 ("Pearl Oglethorpe", "E8"), 

195 ("Pearl Oglethorpe", "E9"), 

196 ("Ruth DeSand", "E5"), 

197 ("Ruth DeSand", "E7"), 

198 ("Ruth DeSand", "E8"), 

199 ("Ruth DeSand", "E9"), 

200 ("Verne Sanderson", "E7"), 

201 ("Verne Sanderson", "E8"), 

202 ("Verne Sanderson", "E9"), 

203 ("Verne Sanderson", "E12"), 

204 ("Myra Liddel", "E8"), 

205 ("Myra Liddel", "E9"), 

206 ("Myra Liddel", "E10"), 

207 ("Myra Liddel", "E12"), 

208 ("Katherina Rogers", "E8"), 

209 ("Katherina Rogers", "E9"), 

210 ("Katherina Rogers", "E10"), 

211 ("Katherina Rogers", "E12"), 

212 ("Katherina Rogers", "E13"), 

213 ("Katherina Rogers", "E14"), 

214 ("Sylvia Avondale", "E7"), 

215 ("Sylvia Avondale", "E8"), 

216 ("Sylvia Avondale", "E9"), 

217 ("Sylvia Avondale", "E10"), 

218 ("Sylvia Avondale", "E12"), 

219 ("Sylvia Avondale", "E13"), 

220 ("Sylvia Avondale", "E14"), 

221 ("Nora Fayette", "E6"), 

222 ("Nora Fayette", "E7"), 

223 ("Nora Fayette", "E9"), 

224 ("Nora Fayette", "E10"), 

225 ("Nora Fayette", "E11"), 

226 ("Nora Fayette", "E12"), 

227 ("Nora Fayette", "E13"), 

228 ("Nora Fayette", "E14"), 

229 ("Helen Lloyd", "E7"), 

230 ("Helen Lloyd", "E8"), 

231 ("Helen Lloyd", "E10"), 

232 ("Helen Lloyd", "E11"), 

233 ("Helen Lloyd", "E12"), 

234 ("Dorothy Murchison", "E8"), 

235 ("Dorothy Murchison", "E9"), 

236 ("Olivia Carleton", "E9"), 

237 ("Olivia Carleton", "E11"), 

238 ("Flora Price", "E9"), 

239 ("Flora Price", "E11"), 

240 ] 

241 ) 

242 G.graph["top"] = women 

243 G.graph["bottom"] = events 

244 return G 

245 

246 

247@nx._dispatch(graphs=None) 

248def florentine_families_graph(): 

249 """Returns Florentine families graph. 

250 

251 References 

252 ---------- 

253 .. [1] Ronald L. Breiger and Philippa E. Pattison 

254 Cumulated social roles: The duality of persons and their algebras,1 

255 Social Networks, Volume 8, Issue 3, September 1986, Pages 215-256 

256 """ 

257 G = nx.Graph() 

258 G.add_edge("Acciaiuoli", "Medici") 

259 G.add_edge("Castellani", "Peruzzi") 

260 G.add_edge("Castellani", "Strozzi") 

261 G.add_edge("Castellani", "Barbadori") 

262 G.add_edge("Medici", "Barbadori") 

263 G.add_edge("Medici", "Ridolfi") 

264 G.add_edge("Medici", "Tornabuoni") 

265 G.add_edge("Medici", "Albizzi") 

266 G.add_edge("Medici", "Salviati") 

267 G.add_edge("Salviati", "Pazzi") 

268 G.add_edge("Peruzzi", "Strozzi") 

269 G.add_edge("Peruzzi", "Bischeri") 

270 G.add_edge("Strozzi", "Ridolfi") 

271 G.add_edge("Strozzi", "Bischeri") 

272 G.add_edge("Ridolfi", "Tornabuoni") 

273 G.add_edge("Tornabuoni", "Guadagni") 

274 G.add_edge("Albizzi", "Ginori") 

275 G.add_edge("Albizzi", "Guadagni") 

276 G.add_edge("Bischeri", "Guadagni") 

277 G.add_edge("Guadagni", "Lamberteschi") 

278 return G 

279 

280 

281@nx._dispatch(graphs=None) 

282def les_miserables_graph(): 

283 """Returns coappearance network of characters in the novel Les Miserables. 

284 

285 References 

286 ---------- 

287 .. [1] D. E. Knuth, 1993. 

288 The Stanford GraphBase: a platform for combinatorial computing, 

289 pp. 74-87. New York: AcM Press. 

290 """ 

291 G = nx.Graph() 

292 G.add_edge("Napoleon", "Myriel", weight=1) 

293 G.add_edge("MlleBaptistine", "Myriel", weight=8) 

294 G.add_edge("MmeMagloire", "Myriel", weight=10) 

295 G.add_edge("MmeMagloire", "MlleBaptistine", weight=6) 

296 G.add_edge("CountessDeLo", "Myriel", weight=1) 

297 G.add_edge("Geborand", "Myriel", weight=1) 

298 G.add_edge("Champtercier", "Myriel", weight=1) 

299 G.add_edge("Cravatte", "Myriel", weight=1) 

300 G.add_edge("Count", "Myriel", weight=2) 

301 G.add_edge("OldMan", "Myriel", weight=1) 

302 G.add_edge("Valjean", "Labarre", weight=1) 

303 G.add_edge("Valjean", "MmeMagloire", weight=3) 

304 G.add_edge("Valjean", "MlleBaptistine", weight=3) 

305 G.add_edge("Valjean", "Myriel", weight=5) 

306 G.add_edge("Marguerite", "Valjean", weight=1) 

307 G.add_edge("MmeDeR", "Valjean", weight=1) 

308 G.add_edge("Isabeau", "Valjean", weight=1) 

309 G.add_edge("Gervais", "Valjean", weight=1) 

310 G.add_edge("Listolier", "Tholomyes", weight=4) 

311 G.add_edge("Fameuil", "Tholomyes", weight=4) 

312 G.add_edge("Fameuil", "Listolier", weight=4) 

313 G.add_edge("Blacheville", "Tholomyes", weight=4) 

314 G.add_edge("Blacheville", "Listolier", weight=4) 

315 G.add_edge("Blacheville", "Fameuil", weight=4) 

316 G.add_edge("Favourite", "Tholomyes", weight=3) 

317 G.add_edge("Favourite", "Listolier", weight=3) 

318 G.add_edge("Favourite", "Fameuil", weight=3) 

319 G.add_edge("Favourite", "Blacheville", weight=4) 

320 G.add_edge("Dahlia", "Tholomyes", weight=3) 

321 G.add_edge("Dahlia", "Listolier", weight=3) 

322 G.add_edge("Dahlia", "Fameuil", weight=3) 

323 G.add_edge("Dahlia", "Blacheville", weight=3) 

324 G.add_edge("Dahlia", "Favourite", weight=5) 

325 G.add_edge("Zephine", "Tholomyes", weight=3) 

326 G.add_edge("Zephine", "Listolier", weight=3) 

327 G.add_edge("Zephine", "Fameuil", weight=3) 

328 G.add_edge("Zephine", "Blacheville", weight=3) 

329 G.add_edge("Zephine", "Favourite", weight=4) 

330 G.add_edge("Zephine", "Dahlia", weight=4) 

331 G.add_edge("Fantine", "Tholomyes", weight=3) 

332 G.add_edge("Fantine", "Listolier", weight=3) 

333 G.add_edge("Fantine", "Fameuil", weight=3) 

334 G.add_edge("Fantine", "Blacheville", weight=3) 

335 G.add_edge("Fantine", "Favourite", weight=4) 

336 G.add_edge("Fantine", "Dahlia", weight=4) 

337 G.add_edge("Fantine", "Zephine", weight=4) 

338 G.add_edge("Fantine", "Marguerite", weight=2) 

339 G.add_edge("Fantine", "Valjean", weight=9) 

340 G.add_edge("MmeThenardier", "Fantine", weight=2) 

341 G.add_edge("MmeThenardier", "Valjean", weight=7) 

342 G.add_edge("Thenardier", "MmeThenardier", weight=13) 

343 G.add_edge("Thenardier", "Fantine", weight=1) 

344 G.add_edge("Thenardier", "Valjean", weight=12) 

345 G.add_edge("Cosette", "MmeThenardier", weight=4) 

346 G.add_edge("Cosette", "Valjean", weight=31) 

347 G.add_edge("Cosette", "Tholomyes", weight=1) 

348 G.add_edge("Cosette", "Thenardier", weight=1) 

349 G.add_edge("Javert", "Valjean", weight=17) 

350 G.add_edge("Javert", "Fantine", weight=5) 

351 G.add_edge("Javert", "Thenardier", weight=5) 

352 G.add_edge("Javert", "MmeThenardier", weight=1) 

353 G.add_edge("Javert", "Cosette", weight=1) 

354 G.add_edge("Fauchelevent", "Valjean", weight=8) 

355 G.add_edge("Fauchelevent", "Javert", weight=1) 

356 G.add_edge("Bamatabois", "Fantine", weight=1) 

357 G.add_edge("Bamatabois", "Javert", weight=1) 

358 G.add_edge("Bamatabois", "Valjean", weight=2) 

359 G.add_edge("Perpetue", "Fantine", weight=1) 

360 G.add_edge("Simplice", "Perpetue", weight=2) 

361 G.add_edge("Simplice", "Valjean", weight=3) 

362 G.add_edge("Simplice", "Fantine", weight=2) 

363 G.add_edge("Simplice", "Javert", weight=1) 

364 G.add_edge("Scaufflaire", "Valjean", weight=1) 

365 G.add_edge("Woman1", "Valjean", weight=2) 

366 G.add_edge("Woman1", "Javert", weight=1) 

367 G.add_edge("Judge", "Valjean", weight=3) 

368 G.add_edge("Judge", "Bamatabois", weight=2) 

369 G.add_edge("Champmathieu", "Valjean", weight=3) 

370 G.add_edge("Champmathieu", "Judge", weight=3) 

371 G.add_edge("Champmathieu", "Bamatabois", weight=2) 

372 G.add_edge("Brevet", "Judge", weight=2) 

373 G.add_edge("Brevet", "Champmathieu", weight=2) 

374 G.add_edge("Brevet", "Valjean", weight=2) 

375 G.add_edge("Brevet", "Bamatabois", weight=1) 

376 G.add_edge("Chenildieu", "Judge", weight=2) 

377 G.add_edge("Chenildieu", "Champmathieu", weight=2) 

378 G.add_edge("Chenildieu", "Brevet", weight=2) 

379 G.add_edge("Chenildieu", "Valjean", weight=2) 

380 G.add_edge("Chenildieu", "Bamatabois", weight=1) 

381 G.add_edge("Cochepaille", "Judge", weight=2) 

382 G.add_edge("Cochepaille", "Champmathieu", weight=2) 

383 G.add_edge("Cochepaille", "Brevet", weight=2) 

384 G.add_edge("Cochepaille", "Chenildieu", weight=2) 

385 G.add_edge("Cochepaille", "Valjean", weight=2) 

386 G.add_edge("Cochepaille", "Bamatabois", weight=1) 

387 G.add_edge("Pontmercy", "Thenardier", weight=1) 

388 G.add_edge("Boulatruelle", "Thenardier", weight=1) 

389 G.add_edge("Eponine", "MmeThenardier", weight=2) 

390 G.add_edge("Eponine", "Thenardier", weight=3) 

391 G.add_edge("Anzelma", "Eponine", weight=2) 

392 G.add_edge("Anzelma", "Thenardier", weight=2) 

393 G.add_edge("Anzelma", "MmeThenardier", weight=1) 

394 G.add_edge("Woman2", "Valjean", weight=3) 

395 G.add_edge("Woman2", "Cosette", weight=1) 

396 G.add_edge("Woman2", "Javert", weight=1) 

397 G.add_edge("MotherInnocent", "Fauchelevent", weight=3) 

398 G.add_edge("MotherInnocent", "Valjean", weight=1) 

399 G.add_edge("Gribier", "Fauchelevent", weight=2) 

400 G.add_edge("MmeBurgon", "Jondrette", weight=1) 

401 G.add_edge("Gavroche", "MmeBurgon", weight=2) 

402 G.add_edge("Gavroche", "Thenardier", weight=1) 

403 G.add_edge("Gavroche", "Javert", weight=1) 

404 G.add_edge("Gavroche", "Valjean", weight=1) 

405 G.add_edge("Gillenormand", "Cosette", weight=3) 

406 G.add_edge("Gillenormand", "Valjean", weight=2) 

407 G.add_edge("Magnon", "Gillenormand", weight=1) 

408 G.add_edge("Magnon", "MmeThenardier", weight=1) 

409 G.add_edge("MlleGillenormand", "Gillenormand", weight=9) 

410 G.add_edge("MlleGillenormand", "Cosette", weight=2) 

411 G.add_edge("MlleGillenormand", "Valjean", weight=2) 

412 G.add_edge("MmePontmercy", "MlleGillenormand", weight=1) 

413 G.add_edge("MmePontmercy", "Pontmercy", weight=1) 

414 G.add_edge("MlleVaubois", "MlleGillenormand", weight=1) 

415 G.add_edge("LtGillenormand", "MlleGillenormand", weight=2) 

416 G.add_edge("LtGillenormand", "Gillenormand", weight=1) 

417 G.add_edge("LtGillenormand", "Cosette", weight=1) 

418 G.add_edge("Marius", "MlleGillenormand", weight=6) 

419 G.add_edge("Marius", "Gillenormand", weight=12) 

420 G.add_edge("Marius", "Pontmercy", weight=1) 

421 G.add_edge("Marius", "LtGillenormand", weight=1) 

422 G.add_edge("Marius", "Cosette", weight=21) 

423 G.add_edge("Marius", "Valjean", weight=19) 

424 G.add_edge("Marius", "Tholomyes", weight=1) 

425 G.add_edge("Marius", "Thenardier", weight=2) 

426 G.add_edge("Marius", "Eponine", weight=5) 

427 G.add_edge("Marius", "Gavroche", weight=4) 

428 G.add_edge("BaronessT", "Gillenormand", weight=1) 

429 G.add_edge("BaronessT", "Marius", weight=1) 

430 G.add_edge("Mabeuf", "Marius", weight=1) 

431 G.add_edge("Mabeuf", "Eponine", weight=1) 

432 G.add_edge("Mabeuf", "Gavroche", weight=1) 

433 G.add_edge("Enjolras", "Marius", weight=7) 

434 G.add_edge("Enjolras", "Gavroche", weight=7) 

435 G.add_edge("Enjolras", "Javert", weight=6) 

436 G.add_edge("Enjolras", "Mabeuf", weight=1) 

437 G.add_edge("Enjolras", "Valjean", weight=4) 

438 G.add_edge("Combeferre", "Enjolras", weight=15) 

439 G.add_edge("Combeferre", "Marius", weight=5) 

440 G.add_edge("Combeferre", "Gavroche", weight=6) 

441 G.add_edge("Combeferre", "Mabeuf", weight=2) 

442 G.add_edge("Prouvaire", "Gavroche", weight=1) 

443 G.add_edge("Prouvaire", "Enjolras", weight=4) 

444 G.add_edge("Prouvaire", "Combeferre", weight=2) 

445 G.add_edge("Feuilly", "Gavroche", weight=2) 

446 G.add_edge("Feuilly", "Enjolras", weight=6) 

447 G.add_edge("Feuilly", "Prouvaire", weight=2) 

448 G.add_edge("Feuilly", "Combeferre", weight=5) 

449 G.add_edge("Feuilly", "Mabeuf", weight=1) 

450 G.add_edge("Feuilly", "Marius", weight=1) 

451 G.add_edge("Courfeyrac", "Marius", weight=9) 

452 G.add_edge("Courfeyrac", "Enjolras", weight=17) 

453 G.add_edge("Courfeyrac", "Combeferre", weight=13) 

454 G.add_edge("Courfeyrac", "Gavroche", weight=7) 

455 G.add_edge("Courfeyrac", "Mabeuf", weight=2) 

456 G.add_edge("Courfeyrac", "Eponine", weight=1) 

457 G.add_edge("Courfeyrac", "Feuilly", weight=6) 

458 G.add_edge("Courfeyrac", "Prouvaire", weight=3) 

459 G.add_edge("Bahorel", "Combeferre", weight=5) 

460 G.add_edge("Bahorel", "Gavroche", weight=5) 

461 G.add_edge("Bahorel", "Courfeyrac", weight=6) 

462 G.add_edge("Bahorel", "Mabeuf", weight=2) 

463 G.add_edge("Bahorel", "Enjolras", weight=4) 

464 G.add_edge("Bahorel", "Feuilly", weight=3) 

465 G.add_edge("Bahorel", "Prouvaire", weight=2) 

466 G.add_edge("Bahorel", "Marius", weight=1) 

467 G.add_edge("Bossuet", "Marius", weight=5) 

468 G.add_edge("Bossuet", "Courfeyrac", weight=12) 

469 G.add_edge("Bossuet", "Gavroche", weight=5) 

470 G.add_edge("Bossuet", "Bahorel", weight=4) 

471 G.add_edge("Bossuet", "Enjolras", weight=10) 

472 G.add_edge("Bossuet", "Feuilly", weight=6) 

473 G.add_edge("Bossuet", "Prouvaire", weight=2) 

474 G.add_edge("Bossuet", "Combeferre", weight=9) 

475 G.add_edge("Bossuet", "Mabeuf", weight=1) 

476 G.add_edge("Bossuet", "Valjean", weight=1) 

477 G.add_edge("Joly", "Bahorel", weight=5) 

478 G.add_edge("Joly", "Bossuet", weight=7) 

479 G.add_edge("Joly", "Gavroche", weight=3) 

480 G.add_edge("Joly", "Courfeyrac", weight=5) 

481 G.add_edge("Joly", "Enjolras", weight=5) 

482 G.add_edge("Joly", "Feuilly", weight=5) 

483 G.add_edge("Joly", "Prouvaire", weight=2) 

484 G.add_edge("Joly", "Combeferre", weight=5) 

485 G.add_edge("Joly", "Mabeuf", weight=1) 

486 G.add_edge("Joly", "Marius", weight=2) 

487 G.add_edge("Grantaire", "Bossuet", weight=3) 

488 G.add_edge("Grantaire", "Enjolras", weight=3) 

489 G.add_edge("Grantaire", "Combeferre", weight=1) 

490 G.add_edge("Grantaire", "Courfeyrac", weight=2) 

491 G.add_edge("Grantaire", "Joly", weight=2) 

492 G.add_edge("Grantaire", "Gavroche", weight=1) 

493 G.add_edge("Grantaire", "Bahorel", weight=1) 

494 G.add_edge("Grantaire", "Feuilly", weight=1) 

495 G.add_edge("Grantaire", "Prouvaire", weight=1) 

496 G.add_edge("MotherPlutarch", "Mabeuf", weight=3) 

497 G.add_edge("Gueulemer", "Thenardier", weight=5) 

498 G.add_edge("Gueulemer", "Valjean", weight=1) 

499 G.add_edge("Gueulemer", "MmeThenardier", weight=1) 

500 G.add_edge("Gueulemer", "Javert", weight=1) 

501 G.add_edge("Gueulemer", "Gavroche", weight=1) 

502 G.add_edge("Gueulemer", "Eponine", weight=1) 

503 G.add_edge("Babet", "Thenardier", weight=6) 

504 G.add_edge("Babet", "Gueulemer", weight=6) 

505 G.add_edge("Babet", "Valjean", weight=1) 

506 G.add_edge("Babet", "MmeThenardier", weight=1) 

507 G.add_edge("Babet", "Javert", weight=2) 

508 G.add_edge("Babet", "Gavroche", weight=1) 

509 G.add_edge("Babet", "Eponine", weight=1) 

510 G.add_edge("Claquesous", "Thenardier", weight=4) 

511 G.add_edge("Claquesous", "Babet", weight=4) 

512 G.add_edge("Claquesous", "Gueulemer", weight=4) 

513 G.add_edge("Claquesous", "Valjean", weight=1) 

514 G.add_edge("Claquesous", "MmeThenardier", weight=1) 

515 G.add_edge("Claquesous", "Javert", weight=1) 

516 G.add_edge("Claquesous", "Eponine", weight=1) 

517 G.add_edge("Claquesous", "Enjolras", weight=1) 

518 G.add_edge("Montparnasse", "Javert", weight=1) 

519 G.add_edge("Montparnasse", "Babet", weight=2) 

520 G.add_edge("Montparnasse", "Gueulemer", weight=2) 

521 G.add_edge("Montparnasse", "Claquesous", weight=2) 

522 G.add_edge("Montparnasse", "Valjean", weight=1) 

523 G.add_edge("Montparnasse", "Gavroche", weight=1) 

524 G.add_edge("Montparnasse", "Eponine", weight=1) 

525 G.add_edge("Montparnasse", "Thenardier", weight=1) 

526 G.add_edge("Toussaint", "Cosette", weight=2) 

527 G.add_edge("Toussaint", "Javert", weight=1) 

528 G.add_edge("Toussaint", "Valjean", weight=1) 

529 G.add_edge("Child1", "Gavroche", weight=2) 

530 G.add_edge("Child2", "Gavroche", weight=2) 

531 G.add_edge("Child2", "Child1", weight=3) 

532 G.add_edge("Brujon", "Babet", weight=3) 

533 G.add_edge("Brujon", "Gueulemer", weight=3) 

534 G.add_edge("Brujon", "Thenardier", weight=3) 

535 G.add_edge("Brujon", "Gavroche", weight=1) 

536 G.add_edge("Brujon", "Eponine", weight=1) 

537 G.add_edge("Brujon", "Claquesous", weight=1) 

538 G.add_edge("Brujon", "Montparnasse", weight=1) 

539 G.add_edge("MmeHucheloup", "Bossuet", weight=1) 

540 G.add_edge("MmeHucheloup", "Joly", weight=1) 

541 G.add_edge("MmeHucheloup", "Grantaire", weight=1) 

542 G.add_edge("MmeHucheloup", "Bahorel", weight=1) 

543 G.add_edge("MmeHucheloup", "Courfeyrac", weight=1) 

544 G.add_edge("MmeHucheloup", "Gavroche", weight=1) 

545 G.add_edge("MmeHucheloup", "Enjolras", weight=1) 

546 return G