记录编号 594959 评测结果 AAAAAAAAAAAAAAAAAAAA
题目名称 正负游戏 最终得分 100
用户昵称 Gravatar袁书杰 是否通过 通过
代码语言 C++ 运行时间 0.622 s
提交时间 2024-10-06 17:18:07 内存使用 26.37 MiB
显示代码纯文本
#include<bits/stdc++.h>
using namespace std;
const int mod=998244353;
#define int long long
int n,m,k,tot,ans=1,aa[1000005];
vector<pair<int,int> > v[1000005];
int ksm(int a,int b){
	int ans=1,ans1=a;
	while(b>0){
		if(b%2==1){
			ans*=ans1;
			ans%=mod;
		}
		ans1*=ans1;
		ans1%=mod;
		b/=2;
	}
	return ans;
}
signed main(){
    freopen("plusminus.in","r",stdin);
    freopen("plusminus.out","w",stdout);
    ios::sync_with_stdio(false);
    cin.tie(0),cout.tie(0);
    cin>>n>>m>>k;
    if(n%2==0&&m%2==1){
    	cout<<0;
    	return 0;
    }
    if(n%2==1&&m%2==0){
    	cout<<0;
    	return 0;
    }
    while(k--){
    	int u,vv,w;
    	cin>>u>>vv>>w;
    	if(n<m){
    		v[vv].push_back(make_pair(u,w));
    	}
    	else{
    		v[u].push_back(make_pair(vv,w));
    	}
    }
    if(n<m){
    	swap(n,m);
    }
    for(int i=1;i<=n;i++){
    	if(v[i].size()>=m){
    		int now=1;
    		for(int j=0;j<v[i].size();j++){
    			pair<int,int> nownow=v[i][j];
    			now*=nownow.second;
    		}
    		if(now==1){
    			ans=0;
    		}
    	}
    	else{
    		ans*=ksm(2,m-v[i].size()-1);
    		ans%=mod;
    	}
    }
    cout<<ans*ksm(ksm(2,m-1),mod-2)%mod<<'\n';
    return 0;
}