记录编号 |
594943 |
评测结果 |
AWAWAAWAAWWWWWWWWWWW |
题目名称 |
正负游戏 |
最终得分 |
30 |
用户昵称 |
wdsjl |
是否通过 |
未通过 |
代码语言 |
C++ |
运行时间 |
0.626 s |
提交时间 |
2024-10-06 14:34:47 |
内存使用 |
26.48 MiB |
显示代码纯文本
#include <bits/stdc++.h>
using namespace std;
using namespace std;
const int N = 1e6 + 5, MOD = 998244353;
int n , m , K , e;
vector<int> a[N];
int ksm(int x, int k){
int ans = 1, now = x;
while(k){
if(k & 1){
ans = ans * now % MOD;
}
now = now * now % MOD;
k >>= 1;
}
return ans;
}
signed main(){
freopen("plusminus.in","r",stdin);
freopen("plusminus.out","w",stdout);
scanf("%d%d%d",&n,&m,&K);
if((n & 1) + (m & 1) == 1){
printf("0");
return 0;
}
int e=0;
if(n<m){
e=1;
swap(n,m);
}
for(int i=1;i<=K;i++){
int xx,yy,zz;
scanf("%d%d%d",&xx,&yy,&zz);
if(e){
swap(xx,yy);
}
// cout<<xx<<yy<<zz<<endl;
a[xx].push_back(zz);
}
int res=1;
for(int i=1;i<=n;i++){
if(a[i].size()<m)res=(res*ksm(2,m-a[i].size()-1))%MOD;
else{
int op=1;
for(auto v:a[i]){
op*=v;
}
if(op==1){
res=0;
}
}
}
printf("%lld\n", res * ksm(ksm(2, m - 1), MOD - 2) % MOD);
return 0;
}