제출 #72534

#제출 시각아이디문제언어결과실행 시간메모리
72534IDxTree (#118)Chocolate Cookie Machine (FXCUP3_chocolate)C++17
83 / 100
1054 ms27240 KiB
#include <bits/stdc++.h> using namespace std; typedef pair<int, int> pii; typedef pair<int, bool> pib; typedef long long ll; const int inf=2e9, MX=300010; vector<int> G[MX]; int n, m, k, e; bool boom[MX]; vector<pib> Q; pib in(){ int v; char c; string S; cin>>c>>c>>v>>c>>S; return {v, S=="BOOM"}; } bool explode(int a, int b){ if(boom[a] || boom[b]) return true; auto it=lower_bound(G[a].begin(), G[a].end(), b); if(it==G[a].end() || *it!=b) return false; else return true; } bool valid(int s){ for(pib p:Q){ int v; bool b; tie(v,b)=p; if(explode(v,s)!=b) return false; } return true; } void solve1(){ for(int i=1; i<=n; i++) sort(G[i].begin(), G[i].end()); vector<int> ans; for(int i=1; i<=n; i++) if(valid(i)) ans.push_back(i); cout<<ans.size()<<'\n'; for(int x:ans) cout<<x<<' '; cout<<'\n'; } void solve2(){ int cnt[MX]={}, f=0; for(pib p:Q){ int v; bool b; tie(v,b)=p; if(boom[v]){ f++; continue; } if(b) for(int x:G[v]) cnt[x]++; else assert(false); } vector<int> ans; for(int i=1; i<=n; i++){ if(boom[i] || cnt[i]==e-f) ans.push_back(i); } cout<<ans.size()<<'\n'; for(int x:ans) cout<<x<<' '; cout<<'\n'; } int main(){ ios::sync_with_stdio(0); cin.tie(0); cin>>n>>m>>k; for(int i=1,x ; i<=m; i++) cin>>x, boom[x]=true; for(int i=1; i<=k; i++){ int u,v; cin>>u>>v; G[u].push_back(v); G[v].push_back(u); } cin>>e; for(int i=1; i<=e; i++){ int v; bool b; tie(v,b)=in(); Q.push_back({v,b}); } if(n<=1000) solve1(); else solve2(); return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...