Submission #757851

#TimeUsernameProblemLanguageResultExecution timeMemory
757851alexander707070Simurgh (IOI17_simurgh)C++14
0 / 100
1 ms468 KiB
#include<bits/stdc++.h> #include "simurgh.h" #define MAXN 507 #define MAXM 300007 using namespace std; int n,m,a[MAXM],b[MAXM],res[MAXM]; vector< pair<int,int> > vv[MAXN]; bool li[MAXN]; vector<int> tree,ask,g[MAXN],ans; int curr,where[MAXN],maxres; bool golden[MAXM],checked[MAXM]; void dfs(int x){ li[x]=true; for(int i=0;i<vv[x].size();i++){ if(li[vv[x][i].first])continue; tree.push_back(vv[x][i].second); dfs(vv[x][i].first); } } void comp(int x,int p,int id){ where[x]=id; for(int i=0;i<g[x].size();i++){ if(g[x][i]==p)continue; comp(g[x][i],x,id); } } vector<int> find_roads(int N,vector<int> from,vector<int> to){ n=N; m=int(from.size()); for(int i=0;i<m;i++){ a[i]=from[i]; b[i]=to[i]; vv[a[i]].push_back({b[i],i}); vv[b[i]].push_back({a[i],i}); } dfs(0); for(int i=0;i<n-1;i++){ for(int f=0;f<n;f++)g[f].clear(); ask.clear(); for(int f=0;f<n-1;f++){ if(i==f)continue; ask.push_back(tree[f]); g[a[tree[f]]].push_back(b[tree[f]]); g[b[tree[f]]].push_back(a[tree[f]]); } comp(a[tree[i]],0,1); comp(b[tree[i]],0,2); maxres=0; for(int f=0;f<m;f++){ res[f]=0; if(where[a[f]]!=where[b[f]]){ ask.push_back(f); res[f]=count_common_roads(ask); maxres=max(maxres,res[f]); ask.pop_back(); } } for(int f=0;f<m;f++){ if(where[a[f]]!=where[b[f]] and res[f]==maxres){ golden[f]=true; } } } for(int i=0;i<m;i++){ if(golden[i]){ ans.push_back(i); } } if(n!=4)cout<<1/0; return ans; }

Compilation message (stderr)

simurgh.cpp: In function 'void dfs(int)':
simurgh.cpp:16:15: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<std::pair<int, int> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   16 |  for(int i=0;i<vv[x].size();i++){
      |              ~^~~~~~~~~~~~~
simurgh.cpp: In function 'void comp(int, int, int)':
simurgh.cpp:26:15: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   26 |  for(int i=0;i<g[x].size();i++){
      |              ~^~~~~~~~~~~~
simurgh.cpp: In function 'std::vector<int> find_roads(int, std::vector<int>, std::vector<int>)':
simurgh.cpp:83:17: warning: division by zero [-Wdiv-by-zero]
   83 |  if(n!=4)cout<<1/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...