제출 #1139731

#제출 시각아이디문제언어결과실행 시간메모리
1139731tone_alexandruMonthly railway pass (LMIO18_menesinis_bilietas)C++20
0 / 100
3093 ms27128 KiB
#include <bits/stdc++.h>

using namespace std;

vector<pair<int, char>> adj[500005];
queue<int> q;

int minim[500005];
signed main()
{
    int n, m, cntt = 0, cnta = 0;
    cin>>n>>m;

    int a, b;
    char type;
    for(int i=0; i<m; i++)
    {
        cin>>a>>b>>type;
        if(type == 'A') cnta ++;
        if(type == 'T') cntt ++;

        adj[a].push_back({b, type});
        adj[b].push_back({a, type});
    }

    if(cntt == m) cout<<n;
    else if(cntt == n)
    {
        int cnt = 0;
        for(int i=1; i<=n; i++)
        {
            if(adj[i].size() == n - 1)
                cnt++;
        }
        cout<<cnt;
    }
    else
    {

        int cnt = 0;
        for(int i=1; i<=n; i++)
        {
            for(int i=1; i<=n; i++)
                minim[i] = 21e8;
            minim[i] = 0;

            q.push(i);

            while(q.empty() == false)
            {
                int nod = q.front();
                q.pop();

                for(auto x : adj[nod])
                {
                    int type = x.second;

                    if(type == 'T'&& minim[x.first] > minim[nod])
                    {
                        minim[x.first] = minim[nod];
                        q.push(x.first);
                    }
                    else if(type == 'A' && minim[x.first] > minim[nod] + 1)
                    {
                        minim[x.first] = minim[nod] + 1;
                        q.push(x.first);
                    }
                }
            }

            int ok = 0;
            for(int j=1; j<=n; j++)
            {
                //cout<<j<<" "<<minim[j]<<'\n';
                if(minim[j] > 1)
                {
                    ok = 1;
                    //break;
                }
            }

            //cout<<'\n';
            if(ok == 0) cnt++;
        }

        cout<<cnt;

    }


    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...