AT_utpc2022_e.Parallel Swapping

通过率:0%

AC君温馨提醒

该题目为【atcoder】题库的题目,您提交的代码将被提交至atcoder进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。

题目描述

有两个长度为 NN 的排列 P=(P1,P2,…,PN), Q=(Q1,Q2,…,QN)P=(P_1,P_2,\ldots,P_N),\ Q=(Q_1,Q_2,\ldots,Q_N)。一开始 Pi=Qi=iP_i = Q_i = i(1≤i≤N1 \leq i \leq N)。对于这两个排列,可以执行如下的操作,次数不限(可以为零次):

  • 选择一个整数 ii,满足 1≤i≤M1 \le i \le M。将 PP 的第 aia_i 位和第 bib_i 位的元素交换,同时将 QQ 的第 cic_i 位和第 did_i 位的元素交换。

请你求出,可以通过若干次操作后得到的 (P,Q)(P, Q) 状态的不同组数,并对 998244353998244353 取模。

输入格式

输入按如下格式从标准输入读入:

NN MM
a1a_1 b1b_1 c1c_1 d1d_1
⋮\vdots
aMa_M bMb_M cMc_M dMd_M

输出格式

输出答案,表示可能的不同 (P,Q)(P, Q) 状态的组数,对 998244353998244353 取模。

输入输出样例

  • 输入#1

    3 1
    1 2 2 3

    输出#1

    2
  • 输入#2

    4 3
    1 2 2 4
    2 3 1 2
    1 4 2 3

    输出#2

    288
  • 输入#3

    2 0

    输出#3

    1

说明/提示

样例解释 1

可能得到的 (P,Q)(P, Q) 状态为 P=(1,2,3), Q=(1,2,3)P=(1, 2, 3),\ Q=(1, 2, 3) 和 P=(2,1,3), Q=(1,3,2)P=(2, 1, 3),\ Q=(1, 3, 2),共计 2 种。

数据范围

  • 输入均为整数。
  • 2≤N≤50002 \leq N \leq 5000
  • 0≤M≤50000 \leq M \leq 5000
  • 1≤ai,bi,ci,di≤N1 \le a_i, b_i, c_i, d_i \le N
  • ai<bia_i < b_i
  • ci<dic_i < d_i
  • 若 i≠ji \neq j,则 (ai,bi,ci,di)≠(aj,bj,cj,dj)(a_i, b_i, c_i, d_i) \neq (a_j, b_j, c_j, d_j)

由 ChatGPT 5 翻译

输入解题思路,AI测评打分。不知道怎么写?

首页