首页 > 其他分享 >食物链

食物链

时间:2022-09-30 17:36:54浏览次数:39  
标签:食物链 int else fa add ans find

#include<bits/stdc++.h>
using namespace std;
class solve{
	public:
		int n;
		int k;
		int fa[50001*3];
		int find(int x){
			return fa[x]==x?x:fa[x]=find(fa[x]);
		}
		void add(int x,int y)
		{
			x=find(x),y=find(y);
			fa[x]=y;
		}
		void work(){
			scanf("%d%d",&n,&k);
			for(int i=1; i<=n*3; i++)fa[i]=i;
			int ans=0;
			for(int i=1; i<=k; i++)
			{
				int op,x,y;
				scanf("%d%d%d",&op,&x,&y);
				if(x>n||y>n)ans++;
				else
				{
					if(op==1)
					{
						if(find(x+n)==find(y)||find(x+2*n)==find(y))
						{
							ans++;
						}
						else
						{
							add(x,y);
							add(x+n,y+n);
							add(x+2*n,y+2*n);
						}
					}
					else
					{
						if(find(x)==find(y)||find(x+2*n)==find(y)||find(y+n)==find(x)){
							ans++;
						}
						else{
							add(x,y+2*n);
							add(x+n,y);
							add(x+2*n,y+n);
						}
					}
				}
			}
			cout<<ans<<endl;
		}
}x;
int main()
{
	x.work();
}

标签:食物链,int,else,fa,add,ans,find
From: https://www.cnblogs.com/dadidididi/p/16745612.html

相关文章

  • P4017 最大食物链计数
    P4017最大食物链计数最大食物链计数题目背景你知道食物链吗?Delia生物考试的时候,数食物链条数的题目全都错了,因为她总是重复数了几条或漏掉了几条。于是她来就来求助你......