#P10813. 【MX-S2-T4】 换

【MX-S2-T4】 换

背景

原题链接:https://oier.team/problems/S2D。

题目描述

给定 n,Vn,V 和一个长为 mm 的序列 (p1,q1),(p2,q2),…,(pm,qm)(p_1,q_1),(p_2,q_2),\dots,(p_m,q_m)。

请求出有多少长度为 nn 的正整数序列 aa,其所有元素 aia_i 满足 1≤ai≤V1\le a_i\le V,将其按 k=1,2,…,mk=1,2,\dots,m 依次执行如下操作后,aa 不降:

  • 若 apk>aqka_{p_k}>a_{q_k},则交换 apka_{p_k} 与 aqka_{q_k} 的值。

答案对 109+710^9+7 取模。

输入格式

第一行三个整数 n,V,mn,V,m。

接下来 mm 行,每行两个整数 pk,qkp_k,q_k。

输出格式

一行一个整数,表示答案对 109+710^9+7 取模后的结果。

3 3 5
3 2
1 3
1 2
2 3
2 1
12
8 900000754 20
5 5
1 2
3 2
1 8
4 8
5 8
3 4
3 7
5 7
3 4
6 8
1 5
7 8
7 8
5 7
1 8
3 8
3 8
5 6
3 8

508510094

提示

【样例解释 #1】

对于第一组样例,有以下 1212 种符合条件的序列:

{1,1,1}\{1,1,1\},{1,1,2}\{1,1,2\},{1,1,3}\{1,1,3\},{1,2,1}\{1,2,1\},{1,3,1}\{1,3,1\},{2,1,1}\{2,1,1\},{2,2,2}\{2,2,2\},{2,2,3}\{2,2,3\},{2,3,2}\{2,3,2\},{3,1,1}\{3,1,1\},{3,2,2}\{3,2,2\},{3,3,3}\{3,3,3\}。

【数据范围】

本题采用捆绑测试。

  • Subtask 0(8 pts):n≤6n\le6,V≤8V\le 8,m≤50m \le 50。
  • Subtask 1(31 pts):n≤8n \le 8。
  • Subtask 2(37 pts):n≤15n \le 15。
  • Subtask 3(24 pts):无特殊限制。

对于所有测试数据,1≤n≤181\le n\le 18,1≤V≤1091\le V\le 10^9,1≤m≤5001\le m\le 500,1≤pk,qk≤n1\leq p_k,q_k\leq n,注意不保证 pkp_k 和 qkq_k 的大小关系,且数据可能存在 pk=qkp_k=q_k。