Submission #814629

#TimeUsernameProblemLanguageResultExecution timeMemory
814629t6twotwoNewspapers (CEOI21_newspapers)C++17
12 / 100
163 ms524288 KiB
#include <bits/stdc++.h> using namespace std; using ll = long long; #define FFOR(i,a,b,c) for(int i=(a);(c)>0?i<=(b):i>=(b);i+=(c)) #define FOOR(i,a,b) FFOR(i,a,b-1,1) #define ROOF(i,a,b) FFOR(i,b-1,a,-1) #define FOR(i,n) FOOR(i,0,n) #define ROF(i,n) ROOF(i,0,n) #define FORR(x,v) for(auto &x:v) #define all(v) (v).begin(),(v).end() #define lla(v) (v).rbegin(),(v).rend() #define sz(v) (int)((v).size()) #define vc vector #define pb push_back #define ppb pop_back #define bk back() #define fr front() #define pp pop() #define eb emplace_back #define lb lower_bound #define ub upper_bound #define bg begin() #define en end() #define em empty() #define f first #define s second int main() { ios::sync_with_stdio(false); cin.tie(nullptr); int N,M; cin>>N>>M; vc<int> adj(N); FOR(i,M){ int x,y; cin>>x>>y; x--,y--; adj[x]+=1<<y; adj[y]+=1<<x; } if(M!=N-1){ cout<<"NO\n"; return 0; } vector<int> f(1<<N,-1),g(1<<N); queue<int> q; f[(1<<N)-1]=0; q.push((1<<N)-1); while(!q.em){ int m=q.fr;q.pp; FOR(i,N){ if(~m>>i&1) continue; int m2=0; FOR(j,N){ if(i!=j&&(m>>j&1)) m2|=adj[j]; } if(f[m2]==-1){ f[m2]=m; g[m2]=i; q.push(m2); } } } if(f[0]==-1){ cout<<"NO\n"; return 0; } cout<<"YES\n"; vc<int> ans; for(int i=0;i!=(1<<N)-1;i=f[i]) ans.pb(g[i]); reverse(all(ans)); cout<<sz(ans)<<"\n"; FORR(x,ans)cout<<x+1<<" "; return 6/22; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...