QOJ.ac

QOJ

时间限制: 12.0 s 内存限制: 1024 MB 总分: 100 可 Hack ✓

#18139. Распространение сообщения

统计

Дан неориентированный граф с $n$ вершинами и $m$ ребрами. Каждое ребро соединяет две вершины $(u, v)$ и имеет вероятность $\frac{p}{q}$ появления в каждый день.

Изначально вершина 1 имеет сообщение. В конце дня вершина имеет сообщение тогда и только тогда, когда она сама или хотя бы одна из смежных с ней вершин имели сообщение в предыдущий день. Заметьте, что каждый день каждое ребро выбирает свое появление независимо.

Вычислите математическое ожидание количества дней до того момента, как все вершины получат сообщение, по модулю $998\,244\,353$.

Входные данные

Первая строка содержит два целых числа $n$ и $m$ ($1 \le n \le 21$, $n - 1 \le m \le \frac{n(n-1)}{2}$).

Далее следуют $m$ строк, каждая из которых содержит четыре целых числа $u, v, p$ и $q$ ($1 \le u \neq v \le n$, $1 \le p < q < 998\,244\,353$, $\gcd(p, q) = 1$) — это означает, что между вершинами $u$ и $v$ существует неориентированное ребро, которое появляется каждый день с вероятностью $\frac{p}{q}$.

Гарантируется, что в графе нет петель и кратных ребер, и что граф связен, если все ребра присутствуют.

Дополнительное ограничение во входных данных: пусть $g_{i,j}$ — вероятность появления ребра между $i$ и $j$ ($g_{i,j} = 0$, если ребра между $i$ и $j$ нет). Гарантируется, что для любого $S \subseteq \{1, 2, \dots, n\}$ ($|S| \ge 1$),

$$\prod_{i \in S} \left( \prod_{j \in \{1, 2, \dots, n\} \setminus S} (1 - g_{i,j}) \right) \not\equiv 1 \pmod{998\,244\,353}.$$

Выходные данные

Выведите единственное целое число в единственной строке — математическое ожидание количества дней по модулю $998\,244\,353$.

Формально, пусть $M = 998\,244\,353$. Можно показать, что точный ответ может быть представлен в виде несократимой дроби $\frac{p}{q}$, где $p$ и $q$ — целые числа и $q \not\equiv 0 \pmod{M}$. Выведите целое число, равное $p \cdot q^{-1} \pmod{M}$. Другими словами, выведите такое целое число $x$, что $0 \le x < M$ и $x \cdot q \equiv p \pmod{M}$.

Примеры

Входные данные 1

2 1
1 2 1 10

Выходные данные 1

10

Примечание

В первом тесте ответ равен математическому ожиданию количества дней до первого появления единственного ребра в графе, что составляет $\frac{1}{0.1} = 10$.

Входные данные 2

3 3
1 2 1 2
1 3 1 2
2 3 1 2

Выходные данные 2

887328316

Примечание

Во втором тесте ответ равен $\frac{20}{9}$ по модулю $998\,244\,353$.

Входные данные 3

1 0

Выходные данные 3

0

Примечание

В третьем тесте единственная вершина уже имеет сообщение, поэтому ответ равен 0.

Входные данные 4

5 8
1 2 1 11
1 3 2 11
1 4 3 11
1 5 4 11
2 4 5 11
2 5 6 11
3 4 7 11
4 5 8 11

Выходные данные 4

469993557

Входные данные 5

21 22
1 2 3 4
2 3 4 5
3 4 5 6
5 6 7 8
6 7 8 9
7 8 9 10
8 9 2 3
9 10 3 4
10 11 4 5
11 12 5 6
12 13 6 7
13 14 7 8
14 15 8 9
15 16 9 10
16 17 2 3
17 18 3 4
18 19 4 5
19 20 5 6
20 21 6 7
1 10 100 1001
15 4 147 220
4 11 1 998244352

Выходные данные 5

299529765

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.