Submission #1235589

#TimeUsernameProblemLanguageResultExecution timeMemory
1235589gry3125Monthly railway pass (LMIO18_menesinis_bilietas)C++20
16 / 100
528 ms74936 KiB
#include <bits/stdc++.h> #define ll long long int #define pb push_back #define fi first #define se second using namespace std; int par[500005], sz[500005]; set<ll> adj[500005]; int find(int a) { if (par[a] == a) return a; return par[a] = find(par[a]); } void merge(int a, int b) { a = find(a); b = find(b); if (a == b) return; if (sz[a] < sz[b]) swap(a, b); par[b] = a; sz[a] += sz[b]; sz[b] = 0; } int main() { int n, m; cin >> n >> m; vector<pair<ll,ll>> bus; for (int i = 1; i <= n; i++) { par[i] = i; sz[i] = 1; } for (int i = 0; i < m; i++) { int a, b; char c; cin >> a >> b >> c; if (c == 'A') bus.pb({a, b}); else merge(a, b); } for (int i = 0; i < bus.size(); i++) { int a = bus[i].fi, b = bus[i].se; a = find(a); b = find(b); adj[a].insert(b); adj[b].insert(a); } int cc = n; vector<int> ld; for (int i = 1; i <= n; i++) { if (sz[i] == 0) cc--; else ld.pb(i); } int cnt = 0; for (auto x : ld) { if (adj[x].size() == cc-1) { cnt += sz[x]; } } cout << cnt; return 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...