Submission #1096934

#TimeUsernameProblemLanguageResultExecution timeMemory
1096934ivazivaMonthly railway pass (LMIO18_menesinis_bilietas)C++14
100 / 100
429 ms85816 KiB
#include <bits/stdc++.h>

using namespace std;

#define MAXN 1000001

int n,m;
vector<int> adj[2][MAXN];
int komp[MAXN],siz[MAXN],tren=0;
bool pos[MAXN];
vector<int> koren;
set<int> komponente;

void dfs(int node)
{
    pos[node]=true;komp[node]=tren;siz[tren]++;
    for (int sled:adj[0][node])
    {
        if (pos[sled]==true) continue;
        else dfs(sled);
    }
}

void dfs1(int node)
{
    pos[node]=true;
    for (int sled:adj[1][node]) 
    {
        if (komp[sled]==komp[node]) continue;
        else komponente.insert(komp[sled]);
    }
    for (int sled:adj[0][node])
    {
        if (pos[sled]==true) continue;
        else dfs1(sled);
    }
}

int main()
{
    cin>>n>>m;
    for (int i=1;i<=m;i++)
    {
        int x,y;cin>>x>>y;char c;cin>>c;
        if (c=='T') {adj[0][x].push_back(y);adj[0][y].push_back(x);}
        else {adj[1][x].push_back(y);adj[1][y].push_back(x);}
    }
    koren.push_back(0);
    for (int i=1;i<=n;i++)
    {
        if (pos[i]==true) continue;
        else {koren.push_back(i);tren++;dfs(i);}
    }
    for (int i=1;i<=n;i++) pos[i]=false;
    int ans=0;
    for (int i=1;i<=tren;i++)
    {
        dfs1(koren[i]);
        if (komponente.size()==tren-1) ans+=siz[i];
        komponente.clear();
    }
    cout<<ans<<endl;
}

Compilation message (stderr)

menesinis_bilietas.cpp: In function 'int main()':
menesinis_bilietas.cpp:59:30: warning: comparison of integer expressions of different signedness: 'std::set<int>::size_type' {aka 'long unsigned int'} and 'int' [-Wsign-compare]
   59 |         if (komponente.size()==tren-1) ans+=siz[i];
      |             ~~~~~~~~~~~~~~~~~^~~~~~~~
#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...