Submission #405275

#TimeUsernameProblemLanguageResultExecution timeMemory
405275dxz05Simurgh (IOI17_simurgh)C++14
13 / 100
465 ms332 KiB
#include "simurgh.h" #include <bits/stdc++.h> using namespace std; const int MAXN = 5e5 + 3e2; typedef long long ll; vector<pair<int, int>> edges; int par[MAXN]; int findset(int x){ if (x == par[x]) return x; return par[x] = findset(par[x]); } bool unite(int x, int y){ x = findset(x); y = findset(y); if (x == y) return false; if (rand() % 2) swap(x, y); par[x] = y; return true; } int n; bool check(vector<int> &r){ if (r.size() != n - 1) return false; for (int i = 0; i < n; i++) par[i] = i; int cnt = 0; for (int i : r){ if (unite(edges[i].first, edges[i].second)) cnt++; } return cnt == n - 1; } vector<int> find_roads(int _n, vector<int> u, vector<int> v) { n = _n; int m = v.size(); for (int i = 0; i < m; i++){ edges.push_back(make_pair(u[i], v[i])); } for (int mask = 0; mask < (1 << m); mask++){ vector<int> r; for (int i = 0; i < m; i++){ if (mask & (1 << i)) r.push_back(i); } if (check(r)){ if (count_common_roads(r) == n - 1) return r; } } return {}; }

Compilation message (stderr)

simurgh.cpp: In function 'bool check(std::vector<int>&)':
simurgh.cpp:28:18: warning: comparison of integer expressions of different signedness: 'std::vector<int>::size_type' {aka 'long unsigned int'} and 'int' [-Wsign-compare]
   28 |     if (r.size() != n - 1) return false;
      |         ~~~~~~~~~^~~~~~~~
#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...