代码:
#include<iostream>
#include<string.h>
#include<cmath>
using namespace std;
int start(){
int n,m,v;
cin>>n>>m>>v;
const int m1=m;
int c[m],d[m];
for(int i=0;i<m;i++){
cin>>c[i]>>d[i];
}
unsigned int x[n];
memset(x,0,sizeof(x));
for(int i=0;i<m;i++){
if(x[c[i]-1]==0||x[c[i]-1]==d[i]){
x[c[i]-1]=d[i];
}else{
return 0;
}
}
int vp=v*v;
unsigned long long all=1;
for(int i=0;i<n-1;i++){
if(x[i]==0){
all*=vp;
}else{
if(x[i+1]==0){
all*=vp;
}else{
all*=vp-v+1;
}
}
}
return all;
}
int main(){
int t;
cin>>t;
for(int i=0;i<t;i++){
cout<<start()%(int)(pow(10,9)+7)<<endl;
}
return 0;
}