Submission #1254185

#TimeUsernameProblemLanguageResultExecution timeMemory
1254185gramathegodMonthly railway pass (LMIO18_menesinis_bilietas)C++20
16 / 100
525 ms103120 KiB
#include <bits/stdc++.h> using namespace std; const int N=5e5+5; vector<int> buses[N]; vector<int> trains[N]; set<int> adj[N]; int parent[N], sz[N]; bool vis[N]; void dfs(int i, int p){ vis[i]=true; parent[i]=p; sz[p]++; for (auto x: trains[i]){ if (!vis[x]){ dfs(x, p); } } } int main() { ios::sync_with_stdio(false); cin.tie(nullptr); int n,m;cin>>n>>m; for (int i=0;i<m;i++){ int u,v; char c; cin>>u>>v>>c; if (c=='A'){ //bus buses[u].push_back(v); buses[v].push_back(u); } else if (c=='T'){ //train trains[u].push_back(v); trains[v].push_back(u); } } int k=1; for (int i=1;i<=n;i++){ if (!vis[i]){ dfs(i, k); k++; } } if (k==1){ cout<<n;return 0; } for (int i=1;i<=n;i++){ for (auto x:buses[i]){ adj[parent[i]].insert(parent[x]); adj[parent[x]].insert(parent[i]); } } k--; int ans=0; for (int i=1;i<=k;i++){ if ((int)adj[i].size()==k-1){ ans+=sz[i]; } } cout<<ans; 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...