Tikvani

시간 제한0.5초메모리 제한2048 MB

요약
DAG의 각 간선에 0 또는 1을 부여할 때, 같은 두 정점 사이의 모든 경로가 무게의 합이 2로 나눈 나머지가 같아지는 부여의 수를 구한다.
난이도

보통10점 중 6점

유형
그래프, 유니온 파인드, 수학, 위상 정렬
정답자
아직 제출이 없습니다

문제

Dva tikvana šeću ulicom...

Prvi tikvan: E smislio sam predobar zadatak. Znači imaš usmjeren acikličan graf iliti DAG... i želiš svakom bridu pridružiti težinu 0 ili 1, tako da između svaka dva čvora težina puta između njih ne ovisi o odabiru puta...

Drugi tikvan: Hmm... ali što ako nema puta između neka dva čvora?

Prvi tikvan: Ma dobro da, kada postoji više puteva, svi oni imaju istu težinu. Uglavnom, traži se broj takvih pridruživanja težina.

Drugi tikvan: Da, dobar zadatak...​​​​​​​

Srećom tada su sreli svog prijatelja netikvana.

Netikvan: Vi to sigurno ne znate riješiti, drugim riječima, kljucate. Ali ja znam riješiti nešto jednostavniji zadatak. Ipak ne mogu tražiti da udaljenost čvorova ne ovisi o odabiru puta, ali mogu tražiti da udaljenost modulo 2 ne ovisi...

Prvi i drugi tikvan: orz

A sada formalno, zadan je usmjeren graf s NN čvorova i MM bridova. Čvorovi su označeni brojevima od 11 do NN te za svaki usmjereni brid (u,v)(u, v) vrijedi u<vu < v. Bojanje bridova nazivamo pridruživanje svakom bridu vrijednosti 00 ili 11. Vrijednost brida (u,v)(u, v) označavamo s w(u,v)w(u, v).

Put između čvorova uu i vv svaki je niz čvorova (a_1,…,a_k)(a\_1, \dots , a\_k) takav da je a_1=ua\_1 = u te a_k=va\_k = v. Također za svaki ii između 11 i k−1k − 1 vrijedi da postoji brid (a_i,a_i+1)(a\_i , a\_{i+1}). Težina puta zbroj je težina svih bridova na njemu tj. w(a_1,a_2)+⋯+w(a_k−1,a_k)w(a\_1, a\_2) + \dots + w(a\_{k−1}, a\_k).

Neko bojanje ww je dobro, ako za svaki par čvorova (u,v)(u, v) te za svaki par puteva između njih, težine tih dvaju puteva imaju isti ostatak pri dijeljenju s 22.

Kako broj dobrih bojanja može biti velik, ispišite njegov ostatak pri dijeljenju s 109+710^9 + 7.

입력

U prvom retku su prirodni brojevi NN i MM.

U sljedećih MM redaka nalaze se različiti parovi brojeva uu i vv (1≤u<v≤N1 ≤ u < v ≤ N) koji označavaju bridove grafa.

출력

U jedini redak potrebno je ispisati ostatak pri dijeljenju s 109+710^9 + 7 broja dobrih bojanja.

힌트

Pojašnjenje prvog probnog primjera:

Putevi 1->2->3->4 te 1->4 moraju imati iste težine modulo 22. Ukoliko bridu (1,4)(1, 4) dodijelimo težinu 00, parno mnogo preostalih bridova mora imati težinu 11, što daje 44 kombinacije. Ako pak bridu (1,4)(1, 4) dodijelimo težinu 11, neparano mnogo preostalih bridova mora imati težinu 11, što opet daje 44 kombinacije.

예제2

  1. 예제 1

    입력
    4 4
    1 2
    2 3
    3 4
    1 4
    
    예상 출력
    8
    
  2. 예제 2

    입력
    4 4
    1 3
    1 4
    2 3
    2 4
    
    예상 출력
    16