Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- from collections import defaultdict
- import math
- def calcPoids(graph):
- poids = {}
- for sommet in graph:
- poids[sommet] = int(1/len(graph[sommet]) * 1e9)
- for voisin in graph[sommet]:
- poids[sommet] += int(1/len(graph[voisin]) * 1e9)
- return poids
- def meilleursPoids(graph):
- meilleursPoids = []
- dictPoids = calcPoids(graph)
- while dictPoids:
- meilleursPoidsAct = 0
- meilleurSommet = 0
- for sommet in dictPoids:
- if dictPoids[sommet] > meilleursPoidsAct:
- meilleursPoidsAct = dictPoids[sommet]
- meilleurSommet = sommet
- meilleursPoids.append(meilleurSommet)
- domines = graph.pop(meilleurSommet)
- for arete in domines:
- for val in graph.values():
- if meilleurSommet in val:
- val.remove(meilleurSommet)
- if arete in val:
- val.remove(arete)
- graph.pop(arete)
- graph = {k:v for k, v in graph.items() if len(v) > 0}
- dictPoids = calcPoids(graph)
- return meilleursPoids
- n = int(input())
- m = int(input())
- sommet = defaultdict(list);
- sommetsMarques = []
- solution = []
- for i in range(m):
- sa,sd = map(int, input().split(' '))
- sommet[sa].append(sd)
- sommet[sd].append(sa)
- meilleursPoids = meilleursPoids(sommet)
- print(len(meilleursPoids))
- for s in meilleursPoids:
- print(s)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement