Submission #350373

#TimeUsernameProblemLanguageResultExecution timeMemory
350373tengiz05Parachute rings (IOI12_rings)C++17
20 / 100
4091 ms44752 KiB
#ifndef EVAL #include "grader.cpp" #endif #include <bits/stdc++.h> using namespace std; #define pb push_back const int Ni = 1e6+5; vector<int> edges[Ni]; int n, ans; vector<int> p; vector<int> sz; int par(int u){ if(p[u] == u)return u; return p[u] = par(p[u]); } bool IsSame(int u, int v){ return par(u) == par(v); } void merge(int u,int v){ u=par(u);v=par(v); if(u == v)return; p[v] = u; sz[u] += sz[v]; return; } void Init(int N_) { n = N_; ans = n; p.assign(n,0); sz.assign(n,0); for(int i=0;i<n;i++)p[i] = i; } int number_of_cycles; void Link(int u, int v){ edges[u].pb(v); edges[v].pb(u); if(IsSame(u, v)){ // idi na number_of_cycles++; }else { merge(u,v); }return; } int please_dont_go_there; bool is_it_normal; bool used[Ni]; void dfs(int u, int p){ used[u] = true; int cnt= 0 ; for(auto v : edges[u]){ if(v != please_dont_go_there)cnt++; if(v == p || v == please_dont_go_there)continue; if(used[v])is_it_normal = false; else dfs(v,u); }if(cnt>2)is_it_normal = false; } int CountCritical(){ if(number_of_cycles > 1)return 0; ans = 0; for(int i=0;i<n;i++){ // it's like: what if we delete this vertex? please_dont_go_there = i; for(int j=0;j<n;j++)used[j] = false; used[please_dont_go_there] = true; is_it_normal = true; for(int j=0;j<n;j++){ if(!used[j])dfs(j,j); } if(is_it_normal)ans++; }return ans; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...