Advertisement
Le_BuG63

tp4_modelisation_math

Dec 12th, 2018
90
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.49 KB | None | 0 0
  1. from collections import defaultdict
  2. import math
  3.  
  4. def calcPoids(graph):
  5.     poids = {}
  6.  
  7.     for sommet in graph:
  8.         poids[sommet] = int(1/len(graph[sommet]) * 1e9)
  9.                
  10.         for voisin in graph[sommet]:
  11.             poids[sommet] += int(1/len(graph[voisin]) * 1e9)
  12.  
  13.     return poids
  14.  
  15. def meilleursPoids(graph):
  16.     meilleursPoids = []
  17.  
  18.     dictPoids = calcPoids(graph)
  19.  
  20.     while dictPoids:
  21.         meilleursPoidsAct = 0
  22.         meilleurSommet = 0
  23.        
  24.         for sommet in dictPoids:
  25.             if dictPoids[sommet] > meilleursPoidsAct:
  26.                 meilleursPoidsAct = dictPoids[sommet]
  27.                 meilleurSommet = sommet
  28.  
  29.         meilleursPoids.append(meilleurSommet)
  30.  
  31.         domines = graph.pop(meilleurSommet)
  32.  
  33.         for arete in domines:
  34.             for val in graph.values():
  35.                 if meilleurSommet in val:
  36.                     val.remove(meilleurSommet)
  37.                 if arete in val:
  38.                     val.remove(arete)
  39.  
  40.             graph.pop(arete)
  41.  
  42.         graph = {k:v for k, v in graph.items() if len(v) > 0}
  43.  
  44.         dictPoids = calcPoids(graph)
  45.  
  46.     return meilleursPoids
  47.  
  48. n = int(input())
  49. m = int(input())
  50.  
  51. sommet = defaultdict(list);
  52. sommetsMarques = []
  53. solution = []
  54.  
  55. for i in range(m):
  56.     sa,sd = map(int, input().split(' '))
  57.     sommet[sa].append(sd)
  58.     sommet[sd].append(sa)
  59.  
  60. meilleursPoids = meilleursPoids(sommet)
  61.  
  62. print(len(meilleursPoids))
  63.  
  64. for s in meilleursPoids:
  65.     print(s)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement