結果
問題 |
No.3275 Minesweeper on Graph
|
ユーザー |
|
提出日時 | 2025-09-19 22:50:08 |
言語 | C++14 (gcc 13.3.0 + boost 1.87.0) |
結果 |
WA
|
実行時間 | - |
コード長 | 1,091 bytes |
コンパイル時間 | 1,629 ms |
コンパイル使用メモリ | 168,676 KB |
実行使用メモリ | 7,720 KB |
最終ジャッジ日時 | 2025-09-19 22:50:14 |
合計ジャッジ時間 | 5,512 ms |
ジャッジサーバーID (参考情報) |
judge4 / judge2 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 39 WA * 1 |
ソースコード
#include <bits/stdc++.h> using namespace std; typedef long long ll; typedef pair<ll,ll> P; #define REP(i,n) for(ll i=0;i<ll(n);i++) vector<ll> m[20]; int main(void){ cin.tie(nullptr); ios_base::sync_with_stdio(false); ll i,j; ll N,M; cin >> N >> M; vector<ll> a(N+1); for(i=1;i<=N;i++) cin >> a[i]; if(M==0){ for(i=1;i<=N;i++){ if(a[i]>1){ cout << "No" << endl; return 0; } } cout << "Yes" << endl; for(i=1;i<=N;i++) cout << a[i] << ' '; cout << endl; return 0; } for(i=1;i<=M;i++){ ll U,V; cin >> U >> V; m[U].push_back(V); m[V].push_back(U); } vector<ll> ans; for(i=0;i<(1LL<<N);i++){ vector<ll> d(N+1,0); for(j=0;j<N;j++) if(i&(1LL<<j)) d[j+1]=1; bool f=true; for(j=1;j<=N;j++){ ll n=m[j].size(); ll s=0; REP(k,n) s+=d[m[j][k]]; if(a[j]!=s){ f=false; break; } } if(f){ ans=d; break; } } if((ll)ans.size()==0) cout << "No" << endl; else{ cout << "Yes" << endl; for(i=1;i<=N;i++) cout << ans[i] << ' '; cout << endl; } return 0; }