結果
問題 | No.2277 Honest or Dishonest ? |
ユーザー | cho435 |
提出日時 | 2023-04-21 22:35:11 |
言語 | C++17(gcc12) (gcc 12.3.0 + boost 1.87.0) |
結果 |
AC
|
実行時間 | 101 ms / 2,000 ms |
コード長 | 876 bytes |
コンパイル時間 | 2,520 ms |
コンパイル使用メモリ | 212,508 KB |
実行使用メモリ | 9,600 KB |
最終ジャッジ日時 | 2024-11-08 06:38:09 |
合計ジャッジ時間 | 7,042 ms |
ジャッジサーバーID (参考情報) |
judge4 / 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; }