Submission #237063

#TimeUsernameProblemLanguageResultExecution timeMemory
237063BertedMonthly railway pass (LMIO18_menesinis_bilietas)C++14
100 / 100
733 ms70060 KiB
#include <iostream> #include <vector> #include <set> #define pii pair<int, int> #define pub push_back #define si set<int> #define fst first #define snd second using namespace std; int n, m, pr[500001] = {}, sz[500001] = {}, comp = 0; vector<pii> edge; vector<si> adj; int findRep(int x) {return pr[x] = (pr[x] == x) ? x : findRep(pr[x]);} void joinG(int a, int b) { a = findRep(a), b = findRep(b); if (a != b) { pr[b] = a; sz[a] += sz[b]; sz[b] = 0; comp--; } } int main() { ios :: sync_with_stdio(0); cin.tie(0); cout.tie(0); int res = 0; cin >> n >> m; for (int i = 0; i < n; i++) {adj.pub(si()); pr[i] = i; sz[i] = 1;} comp = n; for (int i = 0; i < m; i++) { int u, v; char c; cin >> u >> v >> c; if (c == 'T') {joinG(u - 1, v - 1);} else {edge.pub({u - 1, v - 1});} } for (int i = 0; i < edge.size(); i++) { int u = findRep(edge[i].fst), v = findRep(edge[i].snd); if (u != v) { adj[u].insert(v); adj[v].insert(u); } } for (int i = 0; i < n; i++) { if (adj[i].size() == comp - 1) {res += sz[i];} } cout << res << "\n"; return 0; }

Compilation message (stderr)

menesinis_bilietas.cpp: In function 'int main()':
menesinis_bilietas.cpp:38:20: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
  for (int i = 0; i < edge.size(); i++)
                  ~~^~~~~~~~~~~~~
menesinis_bilietas.cpp:49:21: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
   if (adj[i].size() == comp - 1) {res += sz[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...