Submission #766866

#TimeUsernameProblemLanguageResultExecution timeMemory
766866danikoynovSimurgh (IOI17_simurgh)C++14
30 / 100
74 ms1576 KiB
#include "simurgh.h" #include <bits/stdc++.h> using namespace std; const int maxn = 510; 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; } }; int used[maxn * maxn]; vector<int> find_roads(int n, vector<int> u, vector<int> v) { vector < int > gold; int m = u.size(); while(gold.size() < n - 1) { 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; } res.pop_back(); } for (int i = 0; i < pot.size(); i ++) { if (pot[i].second == mx) gold.push_back(pot[i].first); } } return gold; }

Compilation message (stderr)

simurgh.cpp: In function 'std::vector<int> find_roads(int, std::vector<int>, std::vector<int>)':
simurgh.cpp:45:20: warning: comparison of integer expressions of different signedness: 'std::vector<int>::size_type' {aka 'long unsigned int'} and 'int' [-Wsign-compare]
   45 |  while(gold.size() < n - 1)
      |        ~~~~~~~~~~~~^~~~~~~
simurgh.cpp:73: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]
   73 |         for (int i = 0; i < pot.size(); i ++)
      |                         ~~^~~~~~~~~~~~
simurgh.cpp:83: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]
   83 |         for (int i = 0; i < pot.size(); i ++)
      |                         ~~^~~~~~~~~~~~
simurgh.cpp:72:22: warning: unused variable 'rd' [-Wunused-variable]
   72 |         int mx = -1, rd = -1;
      |                      ^~
#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...