Submission #1140511

#TimeUsernameProblemLanguageResultExecution timeMemory
114051112345678Monthly railway pass (LMIO18_menesinis_bilietas)C++20
0 / 100
159 ms55320 KiB
#include <bits/stdc++.h>

using namespace std;

const int nx=5e5+5;

int n, m, sz[nx], g[nx], vs[nx], u, v, cnt, dp[nx], mx, res;
char t;
vector<int> d[nx];
vector<pair<int, int>> edg;
set<int> s[nx];

void dfs(int u, int hd)
{
    vs[u]=1;
    g[u]=hd;
    sz[hd]++;
    for (auto v:d[u]) if (!vs[v]) dfs(v, hd);
}

int main()
{
    cin.tie(NULL)->sync_with_stdio(false);
    cin>>n>>m;
    for (int i=1; i<=m; i++)
    {
        cin>>u>>v>>t;
        if (t=='T') d[u].push_back(v), d[v].push_back(u);
        else edg.push_back({u, v});
    }
    for (int i=1; i<=n; i++) if (!vs[i]) dfs(i, ++cnt);
    for (auto [u, v]:edg) s[g[u]].insert(g[v]), s[g[v]].insert(g[u]);
    for (int i=1; i<=cnt; i++) 
    {
        dp[i]=sz[i];
        for (auto v:s[i]) dp[i]+=sz[v]; 
    }
    for (int i=1; i<=cnt; i++) mx=max(mx, dp[i]);
    for (int i=1; i<=cnt; i++) if (dp[i]==mx ) res+=sz[i];
    cout<<res;
}
#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...