QOJ.ac

QOJ

Time Limit: 1 s Memory Limit: 1024 MB Total points: 100

#8729. Idiots

Statistics

Deux idiots se promènent dans la rue…

Premier idiot : Hé, j'ai trouvé un super problème. Tu vois, tu as un graphe orienté acyclique, autrement dit un DAG… et tu veux attribuer à chaque arc un poids de $0$ ou $1$, de sorte qu'entre deux sommets quelconques, le poids d'un chemin ne dépende pas du chemin choisi…

Deuxième idiot : Hmm… mais s'il n'existe aucun chemin entre certains sommets ?

Premier idiot : Oui, bon, lorsqu'il existe plusieurs chemins, ils ont tous le même poids. Bref, on cherche le nombre de telles attributions de poids.

Deuxième idiot : Oui, c'est un bon problème…

Heureusement, ils rencontrent alors leur ami, qui n'est pas un idiot.

L'ami : Vous ne savez certainement pas résoudre ça ; autrement dit, vous picorez. Mais moi, je sais résoudre un problème un peu plus simple. Je ne peux pas exiger que la distance entre les sommets ne dépende pas du chemin choisi, mais je peux exiger que la distance modulo $2$ n'en dépende pas…

Les deux idiots : orz

Passons maintenant à la définition formelle. On vous donne un graphe orienté à $N$ sommets et $M$ arcs. Les sommets sont numérotés de $1$ à $N$, et chaque arc orienté $(u,v)$ vérifie $u<v$. Une coloration des arcs consiste à attribuer à chaque arc une valeur de $0$ ou $1$. La valeur de l'arc $(u,v)$ est notée $w(u,v)$.

Un chemin entre les sommets $u$ et $v$ est une suite de sommets $(a_1,\ldots,a_k)$ telle que $a_1=u$ et $a_k=v$. De plus, pour tout $i$ entre $1$ et $k-1$, l'arc $(a_i,a_{i+1})$ doit exister. Le poids du chemin est la somme des poids de tous ses arcs, c'est-à-dire $w(a_1,a_2)+\ldots+w(a_{k-1},a_k)$.

Une coloration $w$ est bonne si, pour toute paire de sommets $(u,v)$ et pour toute paire de chemins entre eux, les poids de ces deux chemins ont le même reste dans la division par $2$.

Comme le nombre de bonnes colorations peut être grand, affichez son reste dans la division par $10^9+7$.

Entrée

La première ligne contient les entiers naturels $N$ et $M$.

Les $M$ lignes suivantes contiennent des paires distinctes de nombres $u$ et $v$ ($1\le u<v\le N$), qui représentent les arcs du graphe.

Sortie

Sur une seule ligne, affichez le reste dans la division par $10^9+7$ du nombre de bonnes colorations.

Sous-tâches

Dans toutes les sous-tâches, $1\le N\le 400$ et $0\le M\le 400$.

Sous-tâche Points Contraintes
1 21 $N\le 6$
2 20 $N\le 13$
3 37 $N,M\le 50$
4 22 Aucune contrainte supplémentaire.

Exemples

Entrée 1

4 4
1 2
2 3
3 4
1 4

Sortie 1

8

Entrée 2

4 4
1 3
1 4
2 3
2 4

Sortie 2

16

Remarque

Explication du premier exemple :

Les chemins $1\to 2\to 3\to 4$ et $1\to 4$ doivent avoir le même poids modulo $2$. Si nous attribuons à l'arc $(1,4)$ le poids $0$, un nombre pair des arcs restants doit avoir le poids $1$, ce qui donne $4$ combinaisons. Si, en revanche, nous attribuons à l'arc $(1,4)$ le poids $1$, un nombre impair des arcs restants doit avoir le poids $1$, ce qui donne à nouveau $4$ combinaisons.

Discussions

About Discussions

The discussion section is only for posting: General Discussions (problem-solving strategies, alternative approaches), and Off-topic conversations.

This is NOT for reporting issues! If you want to report bugs or errors, please use the Issues section below.

Open Discussions 0
No discussions in this category.

Issues

About Issues

If you find any issues with the problem (statement, scoring, time/memory limits, test cases, etc.), you may submit an issue here. A problem moderator will review your issue.

Guidelines:

  1. This is not a place to publish discussions, editorials, or requests to debug your code. Issues are only visible to you and problem moderators.
  2. Do not submit duplicated issues.
  3. Issues must be filed in English or Chinese only.
Active Issues 0
No issues in this category.
Closed/Resolved Issues 0
No issues in this category.