Submission #920975

#TimeUsernameProblemLanguageResultExecution timeMemory
920975WongYiKaiMonthly railway pass (LMIO18_menesinis_bilietas)C++14
100 / 100
401 ms114360 KiB
#include <bits/stdc++.h> using namespace std; typedef long long ll; ll visited[600000]; ll type[600000]; ll c=1; ll sets[600000]; vector<ll> adj[600000],adj2[600000]; void dfs(ll vertex){ visited[vertex] = 1; type[vertex] = c; sets[c]++; for (auto item:adj[vertex]){ if (visited[item]==0){ dfs(item); } } } int main(){ ios::sync_with_stdio(0); cin.tie(0); cout.tie(0); ll n,m; cin >> n >> m; for (int i=0;i<m;i++){ ll a,b; char t; cin >> a >> b >> t; if (t=='T'){ adj[a].push_back(b); adj[b].push_back(a); } else { adj2[a].push_back(b); adj2[b].push_back(a); } } for (int i=1;i<=n;i++){ if (visited[i]==0){ dfs(i); c++; } } set<ll> con[c+5]; for (int i=1;i<=n;i++){ for (auto item:adj2[i]){ if (type[i]!=type[item]){ con[type[i]].insert(type[item]); } } } c--; ll total=0; for (int i=1;i<=c;i++){ //cout << con[i].size() << "\n"; ll len = con[i].size(); if (len == c-1) total += sets[i]; } cout << total; }
#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...