Submission #1049689

#TimeUsernameProblemLanguageResultExecution timeMemory
1049689nisanduuKeys (IOI21_keys)C++17
20 / 100
3071 ms32384 KiB
#include <vector> #include <bits/stdc++.h> using namespace std; typedef int ll; ll dfs(ll node,vector<ll> &vis,vector<vector<ll>> &adj){ if(vis[node]) return 0; vis[node]=1; int am = 1; for(auto el:adj[node]){ if(!vis[el]){ //vis[el]=1; am += dfs(el,vis,adj); } } return am; } ll dfs2(int node,vector<int> r, vector<int> u, vector<int> v, vector<int> c,vector<vector<pair<ll,ll>>> adj){ stack<int> st; set<pair<ll,ll>> paths; map<ll,ll> keys; map<ll,ll> visitedNodes; keys[r[node]] = 1; st.push(node); int ans = 0; while(!st.empty()){ ll nnode = st.top(); st.pop(); if(visitedNodes[nnode]) continue; keys[r[nnode]]=1; ans++; visitedNodes[nnode]=1; for(auto el:adj[nnode]){ if(visitedNodes[el.first]) continue; if(!visitedNodes[el.first] && keys[el.second]>0){ st.push(el.first); }else{ paths.insert({el.first,el.second}); } } set<pair<ll,ll>> npaths; for(auto el:paths){ if(visitedNodes[el.first]) continue; if(keys[el.second]){ st.push(el.first); }else{ npaths.insert({el.first,el.second}); } } paths = npaths; } return ans; } vector<int> find_reachable(vector<int> r, vector<int> u, vector<int> v, vector<int> c) { vector<int> ans(r.size(), 0); int n = r.size(); int m = v.size(); vector<vector<pair<ll,ll>>> adj(n+2); for(ll i=0;i<m;i++){ adj[v[i]].push_back({u[i],c[i]}); adj[u[i]].push_back({v[i],c[i]}); } int mini = 1e9; int type = c[0]; // for(int i=0;i<n;i++){ // if(r[i]==type) { // vector<ll> vis(n+2); // ans[i] = dfs(i,vis,adj); // }else{ // ans[i] = 1; // } // mini = min(mini,ans[i]); // } for(int i=0;i<n;i++){ ans[i] = dfs2(i,r,u,v,c,adj); mini = min(ans[i],mini); } for(int i=0;i<n;i++) ans[i] = ans[i]==mini ? 1 : 0; return ans; }

Compilation message (stderr)

keys.cpp: In function 'std::vector<int> find_reachable(std::vector<int>, std::vector<int>, std::vector<int>, std::vector<int>)':
keys.cpp:69:6: warning: unused variable 'type' [-Wunused-variable]
   69 |  int type = c[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...