Submission #1235620

#TimeUsernameProblemLanguageResultExecution timeMemory
1235620veehjMonthly railway pass (LMIO18_menesinis_bilietas)C++17
100 / 100
540 ms69996 KiB
#include <bits/stdc++.h> using namespace std; typedef long long ll; #define fi first #define se second #define pb push_back #define sz(a) (ll) a.size() #define all(x) (x).begin(), (x).end() #define rep(i, a, b) for(ll i=(ll)(a); i<(ll)(b); i++) #define rrep(i, a, b) for(ll i=(ll)(a); i>=(ll)(b); i--) #define vl vector<ll> #define vpll vector<pair<ll, ll>> #define vvl vector<vector<ll>> #define pll pair<ll, ll> //Monthly railway pass ll n, m; vl pa, sz; vpll iniadj; vector<set<ll>> adj; ll findgrp(ll x){ if(pa[x]==x || pa[x]==-1) return x; return pa[x]=findgrp(pa[x]); } void merge(ll a, ll b){ a=findgrp(a); b=findgrp(b); if(a==b) return; if(sz[a]<sz[b]) swap(a, b); pa[b]=a; sz[a]+=sz[b]; } void link(ll a, ll b){ a=findgrp(a); b=findgrp(b); if(a==b) return; adj[a].insert(b); adj[b].insert(a); } void f() { cin >> n >> m; pa.assign(n, -1); sz.assign(n, 1); adj.assign(n, {}); rep(i, 0, m){ ll a, b; char c; cin >> a >> b >> c; a--; b--; if(c=='A') iniadj.pb({a, b}); else merge(a, b); } for(auto& u : iniadj){ ll a=u.fi, b=u.se; link(a, b); } ll ans=0; rep(i, 0, n){ if(findgrp(i)!=i) continue; ll cnt=sz[i]; for(auto& u : adj[i]) cnt+=sz[u]; if(cnt==n) ans+=sz[i]; } cout << ans; } int main() { int tc = 1; // cin >> tc; for (int i = 1; i <= tc; i++) { // cout << '#' << i << endl; f(); cout << endl; } }
#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...