记录编号 528805 评测结果 AAAAAAAAAA
题目名称 [HZOI 2016]犯罪团伙 最终得分 100
用户昵称 Gravatarwire 是否通过 通过
代码语言 C++ 运行时间 0.058 s
提交时间 2019-03-14 20:49:08 内存使用 3.17 MiB
显示代码纯文本
    #include<bits/stdc++.h> 
    using namespace std;
    int n,m,prt[2010],enemy[2010]={0},x,y,ans=0;
    char c;
    bool vis[2010]={false};
    int find(int x)
    {
    	if(prt[x]!=x)prt[x]=find(prt[x]);
    	return prt[x];
    }
    bool connected(int x,int y)
    {
    	return find(x)==find(y);
    } 
    void merge(int x,int y)
    {
    	if(connected(x,y))
    	{
    	return;	
    	}
    	prt[prt[x]]=prt[y];
    }
    int main(){
    	freopen("crime.in","r",stdin);
    	freopen("crime.out","w",stdout);
    	cin>>n>>m;
    	for(int i=1;i<=n;i++)prt[i]=i;
    	for(int i=0;i<m;i++){
    	cin>>c>>x>>y; 
    		if(c=='F'){
    			merge(x,y);
    		}
    		else if(c=='E'){
    			if(!enemy[x])
    			{
    			enemy[x]=y;	
    			}
    			else{
    			merge(y,enemy[x]);
    			} 
    			if(!enemy[y])
    			{
    			enemy[y]=x;
    			} 
    			else 
    			{
    			merge(x,enemy[y]);
    			}
    			 
    		}
    	}
    	for(int i=1;i<=n;i++)
    	{
    	ans+=(find(i)==i);	
    	}
    	cout<<ans;
    	return 0;
    }