Tikvani
시간 제한0.5초메모리 제한2048 MB
DAG의 각 간선에 0 또는 1을 부여할 때, 같은 두 정점 사이의 모든 경로가 무게의 합이 2로 나눈 나머지가 같아지는 부여의 수를 구한다.
문제
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 čvorova i bridova. Čvorovi su označeni brojevima od do te za svaki usmjereni brid vrijedi . Bojanje bridova nazivamo pridruživanje svakom bridu vrijednosti ili . Vrijednost brida označavamo s .
Put između čvorova i svaki je niz čvorova takav da je te . Također za svaki između i vrijedi da postoji brid . Težina puta zbroj je težina svih bridova na njemu tj. .
Neko bojanje je dobro, ako za svaki par čvorova te za svaki par puteva između njih, težine tih dvaju puteva imaju isti ostatak pri dijeljenju s .
Kako broj dobrih bojanja može biti velik, ispišite njegov ostatak pri dijeljenju s .
입력
U prvom retku su prirodni brojevi i .
U sljedećih redaka nalaze se različiti parovi brojeva i () koji označavaju bridove grafa.
출력
U jedini redak potrebno je ispisati ostatak pri dijeljenju s broja dobrih bojanja.
힌트
Pojašnjenje prvog probnog primjera:
Putevi 1->2->3->4 te 1->4 moraju imati iste težine modulo . Ukoliko bridu dodijelimo težinu , parno mnogo preostalih bridova mora imati težinu , što daje kombinacije. Ako pak bridu dodijelimo težinu , neparano mnogo preostalih bridova mora imati težinu , što opet daje kombinacije.