아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

Pokemonturnering

시간 제한4초메모리 제한1024 MB

요약
각 경기에서 이긴 사람이 진 사람 돈의 절반을 가져갈 때, 경기 순서를 정해 1번 선수가 마지막에 가질 수 있는 최대 금액을 구한다.
난이도

보통10점 중 7점

유형
그래프, 그리디, 구현
정답자
아직 제출이 없습니다

문제

Pokémon-mästaren Simone har samlat ihop sina vänner till en turnering. En Pokémon-match spelas mellan exakt två spelare och slutar aldrig oavgjort. Det är även allmänt känt att vinnaren av en Pokémon-match får exakt hälften av motståndarens pengar. I början har alla 100100 kronor var, och det kommer totalt sett att spelas MM matcher.

Simone har spionerat på alla sina vänner, och vet exakt hur bra dessa är. Hon har rangordnat alla spelare i en lång lista, och vet att om två personer möter varandra så vinner alltid den som är överst på listan. Alla spelare är numrerade efter sin position på listan. Simone, som självfallet är den bästa spelaren, har därför nummer 11.

Hon har redan publicerat en lista över vilka matcher som ska spelas, men ordningen är ännu inte bestämd. Nu undrar hon hur mycket pengar hon som mest kan ha i slutet om hon får välja i vilken ordning matcherna ska spelas. Skriv ett program som beräknar detta!

입력

Den första raden består av två heltal: antalet spelare (inklusive Simone), NN, och antalet matcher som ska spelas, MM.

Sedan följer MM rader med matcherna på Simones lista. Varje match är en rad med två heltal 1≤a<b≤N1 \le a < b \le N, numren på de två spelarna som ska mötas.

Inga två spelare kommer möta varandra mer än en gång.

출력

Du ska skriva ut ett decimaltal - antalet kronor Simone kan ha i slutet av tävlingen om hon ordnar matcherna optimalt. Svaret måste anges med minst 66 decimalers nogrannhet.

제한

  • 1≤N≤100,0001 \le N \le 100\\,000, 0≤M≤200,0000 \le M \le 200\\,000

예제3

  1. 예제 1

    입력
    4 3
    2 3
    2 4
    3 4
    
    예상 출력
    100
    
  2. 예제 2

    입력
    5 4
    3 4
    2 3
    1 3
    4 5
    
    예상 출력
    187.5
    
  3. 예제 3

    입력
    3 3
    1 2
    2 3
    1 3
    
    예상 출력
    212.5