CF1795G.Removal Sequences
省选/NOI-
通过率:0%
时间限制:4.00s
内存限制:256MB
AC君温馨提醒
该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。
题目描述
You are given a simple undirected graph, consisting of n vertices and m edges. The vertices are numbered from 1 to n. The i-th vertex has a value ai written on it.
You will be removing vertices from that graph. You are allowed to remove vertex i only if its degree is equal to ai. When a vertex is removed, all edges incident to it are also removed, thus, decreasing the degree of adjacent non-removed vertices.
A valid sequence of removals is a permutation p1,p2,…,pn (1≤pi≤n) such that the i-th vertex to be removed is pi, and every removal is allowed.
A pair (x,y) of vertices is nice if there exist two valid sequences of removals such that x is removed before y in one of them and y is removed before x in the other one.
Count the number of nice pairs (x,y) such that x<y.
给你一个简单的无向图,包含 n 个顶点和 m 条边。顶点编号为 1 到 n。第 i 个顶点上写有一个值 ai。
你将从该图中逐个删除顶点。仅当顶点 i 的度数等于 ai 时,才允许删除它。当一个顶点被删除时,所有与之关联的边也会被同时删除,从而使得与其相邻且尚未被删除的顶点的度数减少。
一个合法的删除序列是一个排列 p1,p2,…,pn(其中 1≤pi≤n),表示第 i 个被删除的顶点是 pi,且每次删除操作均满足上述条件。
若存在两个合法的删除序列,使得在其中一个序列中顶点 x 在 y 之前被删除,而在另一个序列中 y 在 x 之前被删除,则称顶点对 (x,y) 是友好的(nice)。
请计算满足 x<y 的友好对 (x,y) 的数量。
输入格式
The first line contains a single integer t (1≤t≤104) — the number of testcases.
The first line of each testcase contains two integers n and m (1≤n≤105; 0≤m≤min(105,2n⋅(n−1))) — the number of vertices and the number of edges of the graph.
The second line contains n integers a1,a2,…,an (0≤ai≤n−1) — the degree requirements for each removal.
Each of the next m lines contains two integers v and u (1≤v,u≤n; v=u) — the description of an edge.
The graph doesn't contain any self-loops or multiple edges.
The sum of n over all testcases doesn't exceed 105. The sum of m over all testcases doesn't exceed 105.
Additional constraint on the input: there always exists at least one valid sequence of removals.
第一行包含一个整数 t(1≤t≤104)——测试用例的数量。
每个测试用例的第一行包含两个整数 n 和 m(1≤n≤105;0≤m≤min(105,2n⋅(n−1)))——图中顶点数和边数。
第二行包含 n 个整数 a1,a2,…,an(0≤ai≤n−1)——每次移除操作对应的度数要求。
接下来的 m 行,每行包含两个整数 v 和 u(1≤v,u≤n;v=u)——一条边的描述。
该图不含自环或重边。
所有测试用例的 n 之和不超过 105;所有测试用例的 m 之和不超过 105。
输入的额外约束:总存在至少一个合法的移除序列。
输出格式
For each testcase, print a single integer — the number of nice pairs of vertices.
对于每个测试用例,输出一个整数——“好”顶点对的数量。
输入输出样例
输入#1
4 3 2 1 0 1 2 3 1 2 3 3 1 2 0 1 2 2 3 1 3 5 6 3 0 2 1 0 1 2 4 1 4 2 3 4 2 3 5 1 1 0 0
输出#1
1 0 4 0
输入解题思路,AI测评打分。不知道怎么写?