Submission #744412

#TimeUsernameProblemLanguageResultExecution timeMemory
744412amirhoseinfar1385Game (APIO22_game)C++17
30 / 100
4078 ms7972 KiB
#include<bits/stdc++.h> using namespace std; const int maxn=300000+10; int fk=0,fn=0; vector<int>adj[maxn]; int cnt[maxn],w[maxn],vis[maxn]; void init(int n, int k) { for(int i=0;i<k-1;i++){ adj[i].push_back(i+1); } fk=k; fn=n; } int f=0,sz=0; deque<int>vec; void aval(int u){ vis[u]=1; for(auto x:adj[u]){ if(vis[x]==0){ aval(x); } } vec.push_back(u); } void dovom(int u){ vis[u]=1; w[u]=sz; cnt[sz]++; for(auto x:adj[u]){ if(vis[x]==0){ dovom(x); } } } int add_teleporter(int u, int v) { adj[u].push_back(v); if(f==1||(u<fk&&v==u)){ f=1; return 1; } for(int i=0;i<=sz;i++){ cnt[i]=0; } for(int i=0;i<fn;i++){ vis[i]=w[i]=0; } vec.clear(); for(int i=0;i<fn;i++){ if(vis[i]==0){ aval(i); } } for(int i=0;i<fn;i++){ vis[i]=0; } sz=0; while((int)vec.size()>0){ int x=vec.front(); vec.pop_front(); if(vis[x]==0){ sz++; dovom(x); } } for(int i=0;i<fk;i++){ if(cnt[w[i]]>1){ f=1; } } if(f){ return 1; } return 0; }
#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...