Submission #1272065

#TimeUsernameProblemLanguageResultExecution timeMemory
1272065thesenLogičari (COCI21_logicari)C++20
10 / 110
22 ms5736 KiB
#include <bits/stdc++.h> #define pb push_back #define ll long long #define vll vector <ll> #define vbool vector<bool> #define pairll pair<ll,ll> #define fi first #define sc second #define rever greater<ll>() using namespace std; void solve(){ ll n; cin >> n; vector<vll> path(n+1); for(ll i = 0, u, v; i < n; i++){ cin >> u >> v; path[u].pb(v); path[v].pb(u); } ll a = 0, b = 0; for(ll i = 1; i <= n; i++){ if(path[i].size() == 1){ if(a)b = i; else a = i; } } if(a == 0){ if(n%4)cout << -1 << endl; else cout << n/2 << endl; return; } if(a)a = path[a][0]; if(b)b = path[b][0]; vll par(n+1); for(ll i : path[a])par[i] = a; if(b){ for(ll i : path[b]){ if(par[i] != 0){ cout << -1 << endl; return; }par[i] = b; } } ll res = 0; if(a)res++; if(b)res++; for(ll i = 1; i <= n; i++){ if(i == a || i == b)continue; bool ans = 1; for(ll j : path[i]){ if(par[j] != 0 && par[j] != i){ans = false; break;} } if(ans){ res++; for(ll j : path[i])par[j] = i; } } bool ans = true; for(ll i = 1; i <= n; i++){ if(!par[i])ans = false; } if(ans){ cout << res << endl; }else cout << -1 << endl; } int main(){ ios::sync_with_stdio(false); cin.tie(nullptr); ll t=1; //cin >> t; for(int i = 1; i <= t; i++){ solve(); } }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...