結果
問題 |
No.2277 Honest or Dishonest ?
|
ユーザー |
|
提出日時 | 2023-04-21 22:35:11 |
言語 | C++17 (gcc 13.3.0 + boost 1.87.0) |
結果 |
AC
|
実行時間 | 140 ms / 2,000 ms |
コード長 | 876 bytes |
コンパイル時間 | 2,241 ms |
コンパイル使用メモリ | 206,876 KB |
最終ジャッジ日時 | 2025-02-12 12:11:04 |
ジャッジサーバーID (参考情報) |
judge2 / judge3 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 50 |
ソースコード
#include <bits/stdc++.h> #include <atcoder/modint> using namespace std; using ll = long long; #define rep(i,n) for (int i=0;i<(int)(n);i++) using mint = atcoder::modint998244353; int main(){ int n,q; cin>>n>>q; vector<vector<pair<int,int>>> g(n); rep(i,q){ int a,b,c; cin>>a>>b>>c; a--;b--; g.at(a).push_back({b,c}); g.at(b).push_back({a,c}); } vector<int> ans(n,-1); int ct=0; rep(i,n){ if(ans.at(i)!=-1) continue; ct++; ans.at(i)=0; queue<int> q; q.push(i); while(!q.empty()){ int v=q.front(); q.pop(); for(auto [u,c]:g.at(v)){ if(ans.at(u)!=-1){ if(ans.at(u)!=(ans.at(v)^c)){ cout<<0<<endl; return 0; } continue; } ans.at(u)=ans.at(v)^c; q.push(u); } } } cout<<mint(2).pow(ct).val()<<endl; }