Submission #827002

#TimeUsernameProblemLanguageResultExecution timeMemory
827002vjudge1Cats or Dogs (JOI18_catdog)C++17
38 / 100
3072 ms9656 KiB
#include<bits/stdc++.h> #include "catdog.h" #define pb push_back #define pli pair<int,int> #define fi first #define se second #define fastio ios_base::sync_with_stdio(false); cin.tie(NULL); using namespace std; using ll=int; const ll maxN=2e5; const ll inf=1e9; const ll mod=1e9+7; ll a[maxN],dp[maxN][3]; vector<ll>g[maxN]; ll ans=0; void dfs(ll u,ll p=0) { if(a[u]==0) { dp[u][1]=dp[u][2]=dp[u][0]=0; } if(a[u]==1) { dp[u][1]=0; dp[u][2]=dp[u][0]=inf; } if(a[u]==2) { dp[u][2]=0; dp[u][1]=dp[u][0]=inf; } for(int v:g[u]) { if(v!=p) { dfs(v,u); dp[u][0]+=min({dp[v][0],dp[v][1]+1,dp[v][2]+1}); dp[u][1]+=min({dp[v][1],dp[v][0],dp[v][2]+1}); dp[u][2]+=min({dp[v][2],dp[v][0],dp[v][1]+1}); } } } void initialize(int n,vector<int> A,vector<int>B) { for(int i=0;i<n-1;i++) { g[A[i]].pb(B[i]); g[B[i]].pb(A[i]); } for(int i=1;i<=n;i++) { a[i]=0; } } ll cat(int v) { a[v]=1; ans=0; dfs(1); return min({dp[1][1],dp[1][0],dp[1][2]}); } ll dog(int v) { a[v]=2; ans=0; dfs(1); return min({dp[1][1],dp[1][0],dp[1][2]});; } ll neighbor(int v) { a[v]=0; ans=0; dfs(1); return min({dp[1][1],dp[1][0],dp[1][2]}); } /*int main() { fastio //freopen(TASKNAME".INP","r",stdin); //freopen(TASKNAME".OUT","w",stdout); initialize(5,{1,2,2,4},{2,3,4,5}); cat(3),dog(5); cat(2),dog(1); cout << dog(1); }*/
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...