#include <bits/stdc++.h>
using namespace std;
vector<pair<int, char>> adj[10005];
queue<int> q;
bool saveT[10005], saveA[10005];
int minim[10005];
int main()
{
int n, m;
cin>>n>>m;
int a, b;
char type;
for(int i=0; i<m; i++)
{
cin>>a>>b>>type;
adj[a].push_back({b, type});
adj[b].push_back({a, type});
}
int cnt = 0;
for(int i=1; i<=n; i++)
{
for(int i=1; i<=n; i++)
minim[i] = 21e8, saveA[i] = 0, saveT[i] = 0;
minim[i] = 0;
q.push(i);
while(q.empty() == false)
{
int nod = q.front();
q.pop();
saveT[nod] = 1;
saveA[nod] = 1;
for(auto x : adj[nod])
{
int type = x.second;
if(type == 'T' && saveT[x.first] == 0 && minim[x.first] > minim[nod])
{
minim[x.first] = minim[nod];
saveT[x.first] = 1;
q.push(x.first);
}
else if(type == 'A' && saveA[x.first] == 0 && minim[x.first] > minim[nod] + 1)
{
minim[x.first] = minim[nod] + 1;
saveA[x.first] = 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 time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |