Professional Documents
Culture Documents
import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.PrintWriter;
import java.util.Arrays;
import java.util.InputMismatchException;
class T2 {
InputStream is;
PrintWriter out;
String INPUT = "";
void solve()
{
int mod = 1000000007;
for(int T = ni();T > 0;T--){
int n = ni(), m = ni(), K = ni();
int[] from = new int[m];
int[] to = new int[m];
for(int i = 0;i < m;i++){
from[i] = ni()-1;
to[i] = ni()-1;
}
int[][] g = packU(n, from, to);
long s1 = pow(2, n-2, mod) * m % mod;
long es = 0;
for(int[] row : g){
es += (long)row.length*(row.length-1)/2;
}
es %= mod;
long all = (long)m*(m-1)/2%mod;
long s11 = (pow(2, n-3, mod) * (es%mod) + pow(2, n-4,
mod) * ((all-es)%mod))%mod;
if(s11 < 0)s11 += mod;
long e3 = 0;
// A-B,A-C,A-D
for(int[] row : g){
e3 += (long)row.length*(row.length-1)*(row.length-
2)/6;
}
e3 %= mod;
long eh = 0;
// A-B,A-C,C-D
for(int i = 0;i < n;i++){
for(int e : g[i]){
if(i < e){
eh += (long)(g[i].length-1) *
(long)(g[e].length-1)%mod;
}
}
}
// A-B,A-C,C-A
long et = count3Cycles(g);
eh -= et*3;
eh %= mod;
if(eh < 0)eh += mod;
// A-B,A-C,X-Y
t.me/f_a_a_n_g_777
@sup777exams @sup777exams
// sum_{b,c} (m-2-(deg[a]-2)-(deg[b]-1)-(deg[c]-1)
//
long e2 = 0;
for(int[] row : g){
e2 += (long)row.length*(row.length-1)/2*(m-
row.length+2);
for(int e : row){
e2 -= (long)g[e].length*(row.length-1)%mod;
}
e2 %= mod;
if(e2 < 0)e2 += mod;
}
e2 += et*3;
e2 %= mod;
long s2 = s1;
long s21 = s11;
long s3 = s1;
if(K == 1){
out.println(s1);
}else if(K == 2){
out.println((s2 + 2*s11) % mod);
}else{
out.println((s3 + 6*s21 + 6*s111) % mod);
}
}
}
long c3 = 0;
boolean[] nei = new boolean[n];
for(int i = n-1;i >= 0;i--){
for(int e : g[i])nei[e] = true;
for(int e : g[i]){
if(e >= i)break;
for(int f : g[e]){
if(f >= e)break;
if(nei[f])c3++;
}
}
t.me/f_a_a_n_g_777
@sup777exams @sup777exams
return c3;
}
long s = System.currentTimeMillis();
solve();
out.flush();
if(!INPUT.isEmpty())tr(System.currentTimeMillis()-s+"ms");
}
t.me/f_a_a_n_g_777
@sup777exams @sup777exams
t.me/f_a_a_n_g_777
@sup777exams @sup777exams
return a;
}
while(true){
if(b >= '0' && b <= '9'){
num = num * 10 + (b - '0');
}else{
return minus ? -num : num;
}
b = readByte();
}
}
while(true){
if(b >= '0' && b <= '9'){
num = num * 10 + (b - '0');
}else{
return minus ? -num : num;
}
b = readByte();
}
}
t.me/f_a_a_n_g_777