Submission #588515

#TimeUsernameProblemLanguageResultExecution timeMemory
588515jasminNewspapers (CEOI21_newspapers)C++14
4 / 100
1 ms468 KiB
#include<bits/stdc++.h> using namespace std; #define int long long int bfs(int n, vector<vector<int> >& adi){ vector<bool> vis(n); deque<int> q; q.push_back(0); int last=0; vis[0]=true; while(!q.empty()){ int v=last=q.front(); q.pop_front(); for(auto u: adi[v]){ if(!vis[u]){ vis[u]=true; q.push_back(u); } } } return last; } int dfs(int v, int hight, vector<bool>& vis, vector<vector<int> >& adi, bool& pos, vector<int>& h){ if(vis[v]){ /*if((h[v]-hight)%2==1){ pos=false; }*/ return 0; } vis[v]=true; h[v]=hight; int cnt=1; int further=0; for(auto u: adi[v]){ int subtree=dfs(u, hight+1, vis, adi, pos, h); cnt+=subtree; if(subtree>1){ further++; } } pos=pos && (further<=2); return cnt; } signed main(){ ios_base::sync_with_stdio(false); cin.tie(0); int n, m; cin >> n >> m; vector<vector<int> > adi(n); for(int i=0; i<m; i++){ int a, b; cin >> a >> b; adi[a-1].push_back(b-1); adi[b-1].push_back(a-1); } bool pos=true; int root=bfs(n, adi); vector<bool> vis(n, false); vector<int> h(n); dfs(root, 0, vis, adi, pos, h); if(pos){ cout << "YES\n"; cout << 1 << "\n"; cout << 1 << "\n"; } else{ cout << "NO\n"; } }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...