Submission #987025

#TimeUsernameProblemLanguageResultExecution timeMemory
987025PyqeThousands Islands (IOI22_islands)C++17
35 / 100
76 ms26096 KiB
#include <bits/stdc++.h> #include "islands.h" using namespace std; #define mp make_pair #define fr first #define sc second long long n,m,dh[100069],an[100069],cyc[100069]; vector<long long> al[100069],vl[100069]; bitset<100069> vtd,vtd2; void dfs(long long x) { long long i,j,sz=al[x].size(),sz2,k,l; vtd[x]=1; vtd2[x]=1; for(i=0;i<sz;i++) { l=al[x][i]; if(!vtd[l]) { dh[l]=dh[x]+1; dfs(l); } if(vtd2[l]) { if(dh[l]>dh[an[x]]) { an[x]=l; } } else { if(dh[an[l]]>dh[an[x]]) { an[x]=an[l]; } cyc[x]=min(cyc[x]+cyc[l],2ll); } if(!vl[x].empty()) { if(!cyc[l]) { cyc[x]=min(cyc[x]+1,2ll); } sz2=vl[x].size(); for(j=0;j<sz2;j++) { k=vl[x][j]; cyc[k]=max(cyc[k],1ll); } vl[x].clear(); } } vtd2[x]=0; if(vtd2[an[x]]) { vl[an[x]].push_back(x); } } variant<bool,vector<int>> find_journey(int on,int om,vector<int> ka,vector<int> la) { long long i,k,l; n=on; m=om; for(i=1;i<=m;i++) { k=ka[i-1]+1; l=la[i-1]+1; al[k].push_back(l); } dh[0]=-1; dfs(1); return cyc[1]==2; }
#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...