# | Time | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
1220058 | akqxolotl | Keys (IOI21_keys) | C++20 | 3093 ms | 41692 KiB |
#include <vector>
#include <bits/stdc++.h>
using namespace std;
#define pb push_back
#define debug(x) cerr<<#x<<" is "<<x<<endl;
std::vector<int> find_reachable(std::vector<int> r, std::vector<int> u, std::vector<int> v, std::vector<int> c) {
int n=r.size(),m=u.size();
vector<int> p[n+1];
vector<int> o[n];
for(int i=0;i<m;i++){
o[c[i]].pb(i);
}
//debug(n)debug(m)
for(int i=0;i<n;i++){
//debug(i)
bool vis[n];
set<int> adj[n];
memset(vis,0,sizeof(vis));
queue<int> q;
set<int> k;
q.push(i);
int ans=0;
while(!q.empty()){
int t=q.front();
//debug(t)
q.pop();
if(vis[t])continue;
//debug(t)
//if(i==0)debug(t)
vis[t]=1;
ans++;
if(k.find(r[t])==k.end()){
//debug(r[t])
for(auto j:o[r[t]]){
//debug(j)
//if(u[j]>=n||v[j]>=n)debug(u[j])debug(v[j])
if(adj[u[j]].find(v[j])!=adj[u[j]].end())continue;
if(adj[v[j]].find(u[j])!=adj[v[j]].end())continue;
adj[u[j]].insert(v[j]);
adj[v[j]].insert(u[j]);
//debug(v[j])debug(u[j])
if(vis[u[j]]){
if(!vis[v[j]])q.push(v[j]);
}else if(vis[v[j]]){
if(!vis[u[j]])q.push(u[j]);
}
}
k.insert(r[t]);
}
for(auto j:adj[t]){
if(!vis[j])q.push(j);
}
//debug(1)
//debug(i)
}
//debug(ans)
p[ans].pb(i);
}
vector<int> af;
for(int i=0;i<n;i++)af.pb(0);
for(int i=1;i<=n;i++){
if(p[i].empty())continue;
for(auto j:p[i]){
af[j]=1;
}
return af;
}
}
Compilation message (stderr)
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |