比赛 |
2025.1.14 |
评测结果 |
AAAAAAWEEAAAWWEEWWEE |
题目名称 |
遗失的赋值 |
最终得分 |
45 |
用户昵称 |
健康铀 |
运行时间 |
2.088 s |
代码语言 |
C++ |
内存使用 |
7.11 MiB |
提交时间 |
2025-01-14 21:50:27 |
显示代码纯文本
#include<bits/stdc++.h>
using namespace std;
int n,m,v,t,c[1000010];
long long ans,mod=1e9+7;
long long ksm(long long a,long long b){
a=a%mod;
long long res=1;
while(b){
if(b&1)
res=(long long)res*a%mod;
a=a*a%mod;
b/=2;
}
return res;
}
int main(){
freopen("assign.in","r",stdin);
freopen("assign.out","w",stdout);
cin>>t;
while(t--){
cin>>n>>m>>v;
int u=1;
memset(c,0,sizeof(c));
for(int i=1;i<=m;i++){
int p,q;
cin>>p>>q;
if(c[p]!=0&&c[p]!=q){
u=0;
break;
}
c[p]=q;
}
if(u==0){
cout<<0<<endl;
continue;
}
ans=1;
int tp=1,pt=1,tp2;
for(int i=1;i<=n;i++){
if(c[i]==0)
tp++;
else
break;
}
ans=ksm(v*v%mod,tp-1)%mod;
for(int i=tp+1;i<=n;i++){
if(c[i]!=0){
ans=ans*(ksm(v,pt*2)%mod-ksm(v,pt)+ksm(v,pt-1))%mod;
pt=1;
}
else{
pt++;
}
}
ans=ans*ksm(v*v%mod,pt-1)%mod;
cout<<ans<<endl;
}
return 0;
}