Type: Default File IO: flag 2000ms 1024MiB

旗帜(flag)

You cannot submit for this problem because the contest is ended. You can click "Open in Problem Set" to view this problem in normal mode.

题目描述

在“xx西游”网游中,每个帮派都可以设置自己旗帜,编号为1 k1~kkk种旗帜。另外每个帮派均会设置一个自己的敌对帮派。
假设,这个网游内有nn个帮派并编号从1 n1~n,其中在有mm种帮派旗帜已经确定的情况下,有多少种设计方案,使得每个帮派的旗帜,都和自己的敌对帮派的旗帜不同。 方案数可能很大,你只需要输出对109+710^9+7取模的结果即可。

输入格式

从文件flag.in中读入数据。
输入的第一行包含三个正整数 n,m,kn,m,k,分别表示帮派的个数、确定的帮派个数和旗帜的种类数。
接下来nn行,第i行仅一个整数did_i,表示第i个帮派的敌对帮派编号为did_i
接下来mm行,每行两个整数i,cii,c_i。表示第ii个帮派的旗帜必须是第cic_i种。

输出格式

输出到文件flag.out中。 输出仅一个数字,即设置旗帜的方案数,结果可能很大,你只需要输出对109+710^9+7取模的结果即可。

3 0 3
2
3
1
1	6

样例1解释

4 1 3
3
1
2
1
4 3
1	4

样例2解释

tree3.ans
tree3.in

数据范围

对于所有测试数据有:2≤n≤2×10^5,0≤m≤〖min(n,10〗^4),2≤k≤20,〖1≤d_i≤n,d〗_i≠i,1≤c_i≤k 。保证不会有重复确认同一个帮派的旗帜种类。

队列、单调队列、优先队列

Not Claimed
Status
Done
Problem
18
Open Since
2025-4-19 8:15
Deadline
2025-5-31 23:59
Extension
24 hour(s)