Submission #1179069

#TimeUsernameProblemLanguageResultExecution timeMemory
1179069prideliqueeeMonthly railway pass (LMIO18_menesinis_bilietas)C++20
100 / 100
267 ms38432 KiB
#include<bits/stdc++.h> using namespace std; #define int long long #define f first #define s second int p[500010]; int root(int u) { if(p[u]==u) return u; return p[u]=root(p[u]); } signed main() { ios_base::sync_with_stdio(0); cin.tie(0); int n,m; cin>>n>>m; int cnt=n; for(int i=1;i<=n;i++) p[i]=i; vector<pair<int,int>> w; for(int i=0;i<m;i++) { int u,v; char c; cin>>u>>v>>c; if(c=='A') { w.push_back({u,v}); } else { if(root(u)==root(v)) continue; cnt--; p[root(u)]=root(v); } } set<pair<int,int>> s; int sum[n+1]; memset(sum,0,sizeof sum); for(auto x:w) { int u=x.f,v=x.s; u=root(u),v=root(v); if(u==v) continue; if(u>v) swap(u,v); if(s.count({u,v})==1) continue; sum[u]++; sum[v]++; s.insert({u,v}); } int ans=0; for(int i=1;i<=n;i++) { int u=root(i); if(sum[u]==cnt-1) ans++; } cout<<ans; }
#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...