Submission #288447

#TimeUsernameProblemLanguageResultExecution timeMemory
288447davi_bartSimurgh (IOI17_simurgh)C++14
0 / 100
1 ms384 KiB
#include "simurgh.h" #include <bits/stdc++.h> using namespace std; #define ll long long #define fi first #define se second #define ld long double /* 4 6 0 1 0 2 0 3 1 2 1 3 2 3 0 1 5 */ int count_common_roads(const vector<int>& r); int N; set<pair<int,int> > p[600]; vector<int> grafo(int pos){ vector<int> v; vector<bool> vis(N,0); queue<pair<int,int> >q; if(pos==0)q.push({1,-1}); else q.push({0,-1}); while(!q.empty()){ auto &[pp,idx]=q.front(); q.pop(); if(vis[pp])continue; vis[pp]=1; if(idx!=-1)v.push_back(idx); for(auto x:p[pp]){ if(x.first!=pos)q.push({x.first,x.second}); } } return v; } vector<int> ordine; void ord(){ vector<bool> vis(N,0); queue<int>q; q.push(0); while(!q.empty()){ int pp=q.front(); q.pop(); if(vis[pp])continue; vis[pp]=1; ordine.push_back(pp); for(auto x:p[pp]){ q.push(x.first); } } reverse(ordine.begin(),ordine.end()); } std::vector<int> find_roads(int n, std::vector<int> u, std::vector<int> v){ N=n; for(int i=0;i<u.size();i++){ p[u[i]].insert({v[i],i}); p[v[i]].insert({u[i],i}); } vector<int> ans; ord(); for(int qq=0;qq<N;qq++){ int i=ordine[qq]; auto x=grafo(i); for(int w:ans)x.push_back(w); int ma=0; vector<int> k; for(auto y:p[i]){ x.push_back(y.second); k.push_back(count_common_roads(x)); x.pop_back(); ma=max(ma,k.back()); } int rr=0; for(auto j:p[i]){ if(k[rr]==ma)ans.push_back(j.second); rr++; } for(auto &[a,b]:p[i]){ p[a].erase({i,b}); } p[i].clear(); } sort(ans.begin(),ans.end()); ans.resize(unique(ans.begin(),ans.end())-ans.begin()); return ans; }

Compilation message (stderr)

simurgh.cpp: In function 'std::vector<int> grafo(int)':
simurgh.cpp:28:11: warning: structured bindings only available with '-std=c++17' or '-std=gnu++17'
   28 |     auto &[pp,idx]=q.front();
      |           ^
simurgh.cpp: In function 'std::vector<int> find_roads(int, std::vector<int>, std::vector<int>)':
simurgh.cpp:58:16: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   58 |   for(int i=0;i<u.size();i++){
      |               ~^~~~~~~~~
simurgh.cpp:81:15: warning: structured bindings only available with '-std=c++17' or '-std=gnu++17'
   81 |     for(auto &[a,b]:p[i]){
      |               ^
#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...