Submission #72684

#TimeUsernameProblemLanguageResultExecution timeMemory
72684mhndSimurgh (IOI17_simurgh)C++14
0 / 100
2 ms560 KiB
#include "simurgh.h" #include <bits/stdc++.h> using namespace std; typedef long long ll; typedef unsigned long long ull; const int N = 2e5+50; const int oo = 1e9; const int mod = 1e9+7; vector<pair<int,int>> g[510]; bool taken[510],used[N]; vector<int> find_roads(int n, vector<int> U, vector<int> V) { for(int i=0;i<(int)U.size();i++){ g[U[i]].push_back({V[i],i}); g[V[i]].push_back({U[i],i}); } vector<int> ans; for(int i=0;i<n;i++){ for(int j=0;j<g[i].size();j++){ int v = g[i][j].first; int w = g[i][j].second; if(taken[i] && taken[v] || used[w])continue; taken[i]=taken[v]=1; used[w]=1; ans.push_back(w); } } int lst = count_common_roads(ans); for(int i=0;i<ans.size();i++){ int cur = 0; taken[U[ans[i]]]=taken[V[ans[i]]]=0; bool f=0; for(int j=0;j<g[U[ans[i]]].size();j++){ int v = g[U[ans[i]]][j].first; int u = U[ans[i]]; if((taken[u] && taken[v]) || used[g[U[ans[i]]][j].second])continue; int tmp = ans[i]; ans[i] = g[U[ans[i]]][j].second; cur = count_common_roads(ans); if(cur > lst){ taken[v]=taken[u]=1; used[ans[i]]=1; f=1; lst = cur; break; } ans[i] = tmp; } if(f)continue; for(int j=0;j<g[V[ans[i]]].size();j++){ int v = g[V[ans[i]]][j].first; int u = V[ans[i]]; if((taken[u] && taken[v]) || g[V[ans[i]]][j].second == i)continue; int tmp = ans[i]; ans[i] = g[V[ans[i]]][j].second; cur = count_common_roads(ans); if(cur > lst){ taken[v]=taken[u]=1; used[ans[i]]=1; f=1; lst = cur; break; } ans[i] = tmp; } if(f)continue; taken[U[ans[i]]]=taken[V[ans[i]]]=1; } sort(ans.begin(),ans.end()); return ans; }

Compilation message (stderr)

simurgh.cpp: In function 'std::vector<int> find_roads(int, std::vector<int>, std::vector<int>)':
simurgh.cpp:22:16: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
   for(int j=0;j<g[i].size();j++){
               ~^~~~~~~~~~~~
simurgh.cpp:25:16: warning: suggest parentheses around '&&' within '||' [-Wparentheses]
    if(taken[i] && taken[v] || used[w])continue;
       ~~~~~~~~~^~~~~~~~~~~
simurgh.cpp:32:15: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
  for(int i=0;i<ans.size();i++){
              ~^~~~~~~~~~~
simurgh.cpp:36:16: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
   for(int j=0;j<g[U[ans[i]]].size();j++){
               ~^~~~~~~~~~~~~~~~~~~~
simurgh.cpp:53:16: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
   for(int j=0;j<g[V[ans[i]]].size();j++){
               ~^~~~~~~~~~~~~~~~~~~~
#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...