Submission #766842

#TimeUsernameProblemLanguageResultExecution timeMemory
766842danikoynovSimurgh (IOI17_simurgh)C++14
30 / 100
71 ms3476 KiB
#include "simurgh.h" #include <bits/stdc++.h> using namespace std; const int maxn = 250; struct disjoint_set_union { int par[maxn]; disjoint_set_union(){}; disjoint_set_union(int n) { for (int i = 0; i < n; i ++) par[i] = i; } int find_leader(int v) { if (v == par[v]) return v; return (par[v] = find_leader(par[v])); } bool is_connected(int v, int u) { return find_leader(v) == find_leader(u); } void unite(int v, int u) { v = find_leader(v); u = find_leader(u); if (v == u) return; par[v] = u; } }; vector<int> find_roads(int n, vector<int> u, vector<int> v) { vector < int > gold; int m = u.size(); for (int t = 0; t < n - 1; t ++) { disjoint_set_union dsu(n); int cp = n; vector < int > res; for (int edge : gold) { dsu.unite(u[edge], v[edge]); cp --; res.push_back(edge); } for (int j = 0; j < m && cp > 2; j ++) { if (!dsu.is_connected(u[j], v[j])) { dsu.unite(u[j], v[j]); cp --; res.push_back(j); } } vector < pair < int, int > > pot; for (int i = 0; i < m; i ++) { if (!dsu.is_connected(u[i], v[i])) pot.push_back({i, 0}); } int mx = -1, rd = -1; for (int i = 0; i < pot.size(); i ++) { res.push_back(pot[i].first); pot[i].second = count_common_roads(res); if (pot[i].second > mx) { mx = pot[i].second; rd = pot[i].first; } res.pop_back(); } gold.push_back(rd); } return gold; }

Compilation message (stderr)

simurgh.cpp: In function 'std::vector<int> find_roads(int, std::vector<int>, std::vector<int>)':
simurgh.cpp:71:27: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<std::pair<int, int> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   71 |         for (int i = 0; i < pot.size(); 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...