#include<iostream>
#include<vector>
#include<set>
#include<bitset>
const int NMAX=500005;
struct bus_edge{
int from, to;
};
std::vector<int>t(NMAX), cnt(NMAX, 1);
std::vector<bus_edge>rem;
std::bitset<NMAX>f;
std::set<int>S[NMAX];
int n, m, nr_cc, ans=0;
inline int root(int x)
{
if(!t[x])
return x;
t[x]=root(t[x]);
return t[x];
}
inline void unite(int x, int y)
{
int rx=root(x), ry=root(y);
if(rx==ry)
return;
--nr_cc;
if(cnt[x]>cnt[y])
{
cnt[x]+=cnt[y];
t[ry]=rx;
return;
}
cnt[y]+=cnt[rx];
t[rx]=ry;
}
void read()
{
std::cin>>n>>m;
nr_cc=n;
for(int i=0; i<m; ++i)
{
int from, to;
char type;
std::cin>>from>>to>>type;
if(type=='T')
unite(from, to);
else if(type=='A')
rem.push_back({from, to});
}
}
void solve()
{
if(nr_cc==1)
std::cout<<n;
else
std::cout<<0;
return;
}
int main()
{
std::ios_base::sync_with_stdio(false);
read();
solve();
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... |