Submission #434001

#TimeUsernameProblemLanguageResultExecution timeMemory
434001HediChehaidarLove Polygon (BOI18_polygon)C++17
29 / 100
312 ms16072 KiB
/* ID: hedichehaidar TASK: photo LANG: C++11 */ #include<bits/stdc++.h> typedef long long ll; typedef unsigned long long ull; typedef long double ld; typedef double db; ll gcd(ll a , ll b) {return b ? gcd(b , a % b) : a ;} // greatest common divisor (PGCD) ll lcm(ll a , ll b) {return (a * b) / gcd(a , b);} // least common multiple (PPCM) #define ss second #define ff first #define all(x) (x).begin() , (x).end() #define pb push_back #define vi vector<int> #define vii vector<pair<int,int>> #define vl vector<ll> #define vll vector<pair<ll,ll>> #define pii pair<int,int> #define pll pair<ll,ll> #define pdd pair<double,double> #define vdd vector<pdd> #define dte tuple<double , double , double> using namespace std; const int INF = 1000*1000*1000; // 1 e 9 const int MOD = INF + 7; const double EPS = 0.000000001; // 1 e -9 const ll inf = (ll)1e18; int n; map<string , int> m; vi adj[(int)1e5 + 10]; bool vis[(int)1e5 + 10]; vi ts; void dfs(int pos){ if(vis[pos]) return ; vis[pos] = true; for(auto c : adj[pos]) dfs(c); ts.pb(pos); } int main() { //ifstream fin ("race.in"); //ofstream fout ("race.out"); ios::sync_with_stdio(false);cin.tie(0);cout.tie(0); cin>>n; if(n % 2) return cout << -1 << endl,0; int cur = 0; for(int i = 0 ; i < n ; i++){ string a , b ; cin>>a>>b; if(m.find(a) == m.end()){ m[a] = cur; cur++; } if(m.find(b) == m.end()){ m[b] = cur; cur++; } int u = m[a] , v = m[b]; adj[u].pb(v); } for(int i = 0 ; i < n ; i++){ if(!vis[i]) dfs(i); } reverse(all(ts)); memset(vis , 0 , sizeof vis); int ans = 0; for(int i = 0 ; i < n ; i++){ int pos = ts[i]; if(vis[pos]) continue; vis[pos] = true; int c = adj[pos][0]; vis[c] = true; ans++; } cout << ans << "\n"; return 0; } /* Think of : BS / DFS / BFS / SSSP / SCC / MSP / MAX FLOW / TOPSORT / LCA / MATRIX / DP(bitmask) / 2 POINTERS / SEG TREE / MATH / UN FIND / MO Read the statement CAREFULLY !! Make a GREADY APPROACH !!!! (start from highest / lowest) Make your own TESTS !! Be careful from CORNER CASES ! */
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...